获取运行目录名称的方法

时间:2014-09-03 06:15:55

标签: linux bash

我无法理解bash中的以下代码。

set `pwd` ; mfix=$1

它实际上获取了运行目录名称。但我不知道它是如何工作的。 什么是set命令意味着什么?

2 个答案:

答案 0 :(得分:5)

来自set的{​​{3}}:

  

这个内置非常复杂,值得拥有自己的部分。组   允许您更改shell选项的值并设置   位置参数,或显示shell的名称和值   变量

e.g。

set v1 v2 v3 ; echo $1

将打印

v1

内部反引号中的命令被称为“命令替换”。来自doc

  

Bash通过执行命令并替换来执行扩展   命令用命令的标准输出替换,用any   尾随新行已删除。

在您的示例中,将第一个位置参数$1设置为为反引号内执行命令的结果的值。 (称为命令替换)。该命令是pwd显示当前工作目录的命令。

无论如何,如果目录的路径包含空格,$1将仅获取路径的第一部分。例如

$ pwd
/some/path with/space
$ set `pwd`
$ echo $1
/some/path
$echo $2
with/space

最后以上所有都是奇怪的设计,因为你可以简单地说:

mfix=$(pwd)   #old school:  mfix=`pwd`

最好使用$(command)代替反对。

答案 1 :(得分:2)

bash中的这段代码将命令pwd的结果放在变量mfix中。

您可以通过运行

打印mfix变量的结果
echo $mfix