我一直在试图弄清楚bash环境变量中括号的作用。例如,在下面的实际代码示例中,为什么有些定义在PATH
周围使用了{}
,例如export ...=.../${PATH}
。也请注意,有些定义是不同的:有些使用带有括号内的$
的{$ECLIPSE_DIR}
;有些使用带有括号外$
的${PATH}
,而有些则完全省略了括号。这段代码通常可以工作,尽管有时会显示像底部所示的错误(它们似乎是瞬态的),我不确定为什么这样的错误只有有时才会出现。
关于如何包含bash环境变量的通用做法是什么?在何时应该使用括号,将$
放在括号内和括号外有什么区别?此外,为什么有些行在变量名之前有一个"export
",而有些则没有?这里有什么区别?
# ECLIPSE
ECLIPSE_DIR=$HOME/eclipse
PATH=${PATH}:{$ECLIPSE_DIR}
# ANT
ANT_HOME=/usr/bin/ant
PATH=${ANT_HOME}/bin:${PATH}
export ANT_HOME PATH
# GRADLE
export GRADLE_HOME=/usr/local/gradle
export PATH=$GRADLE_HOME/bin:$PATH</code>
-bash: export: `/usr/bin/ant/bin:/usr/local/bin:{/Users/me/eclipse}:/usr/bin/scala-2.9.0.1/bin:/usr/local/mysql/bin:/usr/local/bin:{/Users/me/eclipse}': not a valid identifier