omn*_*ist 10 bash environment-variables
我一直试图弄清楚bash环境变量中括号的用途是什么.例如,在下面的代码示例中,为什么有些定义使用了{} aroudn PATH,例如export ... = .../$ {PATH}.还要注意一些定义是不同的:有些定义使用{$ ECLIPSE_DIR}和括号内的$; 有些人使用$ {PATH}和括号外的$,有些省略括号.这段代码通常有效,虽然有时会显示底部显示的错误(它们似乎是短暂的),但我不确定为什么这些错误只会出现在有时而不是其他错误上.
有关包含bash环境变量的方法的常见做法是什么,何时应该使用括号,以及将$放在括号内外有什么区别?另外,为什么有些行在变量名之前有"导出",有些则没有?这有什么区别?
# 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>
Run Code Online (Sandbox Code Playgroud)
-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
Run Code Online (Sandbox Code Playgroud)
大括号通常用于清晰,但实际使用是从变量名称中分解文本.说我有以下内容:
$ word="ello"
$ echo "h$word"
hello
$ echo "y$wordw" # bash tries to find the var wordw, and replaces with a blank
y
$ echo "y${word}w"
yellow
Run Code Online (Sandbox Code Playgroud)
变量名称由大多数标点符号自动分隔(特别是.或/).
echo "$word/$word.$word"
ello/ello.ello
Run Code Online (Sandbox Code Playgroud)
查看您提供的错误,{$ECLIPSE_DIR}将变量展开,然后用文字打开和关闭括号包围.我认为解决方案应该改为${ECLIPSE_DIR}
在回答这个export问题时,export用于使调用此脚本的shell可以访问变量.脚本完成后,脚本中设置的任何变量都不存在,除非导出它.因此,如果您希望PATH在运行该脚本后进行更改,export PATH则必须在脚本结束之前调用它.
| 归档时间: |
|
| 查看次数: |
3202 次 |
| 最近记录: |