2009-09-12 36 views
3

将环境变量(如PATH)用作$ PATH或$ {PATH}有什么区别?

回答

12

在大多数情况下没有区别。唯一重要的是如果你想在扩展后包含尾随文本。例如,假设您的PATH包含字符串FOO(实际上不是有效的路径,但这是一个示例),并且您希望形成字符串FOOBAR。如果你没有

$PATHBAR 

你会得到一个名为PATHBAR变量,这可能不是你想要的扩展。如果你没有

$PATH BAR 

你会得到一个空间FOOBAR之间,也没有你想要的东西。解决方案是使用大括号:

${PATH}BAR 

这会给你FOOBAR

4

PATH是环境变量的名称,$PATH${PATH}是访问它们的方法。表格${PATH}用于允许使用$PATHb将失败的构造如echo ${PATH}b。此外,bash允许大量参数替换的东西,man page会很乐意告诉您更多。

+0

什么是'$ {PATH}'之后的'b'是什么意思? – mk12

+1

它将在PATH之后放置一个文字“b”,而不是访问名为PATHb的环境变量。亲自尝试一下。 –

0

在你的情况没有什么区别,但 - 取势:你有两个变量:

$FOO = "YA" 
$YADA = "bar" 

然后${$FOODA}会给你什么,而${${FOO}DA}会给你“吧”

+1

'$ FOO =“YA”'不正确 - 它不符合您的想法。你需要做'FOO - ='YA'' –

+0

不,$ {$ {FOO} DA}会给你一个语法错误,但eval'$'{$ {FOO} DA}会给出$ YADA的内容。 ..如果你正确地分配给FOO。 –