在.bashrc中设置环境变量的最佳方法是什么?


Answers:


16

最好的办法

export VAR=value

区别

在做

VAR=value

仅在脚本持续时间内设置变量(.bashrc在这种情况下)。脚本的子进程(如果有的话)将没有定义VAR,并且一旦脚本退出VAR就消失了。

export VAR=value

显式添加VAR到传递给子进程的变量列表中。要尝试吗?打开壳,做

PS1="foo > "
bash --norc

新的外壳程序将获得默认提示。如果相反,你做类似的事情

export PS1="foo > "
bash --norc

新的shell会得到您刚设置的提示。

更新:正如Ian Kelling所述,以下设置的变量会在.bashrcsource的shell 中保留.bashrc。更一般而言,只要外壳程序(使用source scriptname命令)从脚本中获取脚本,脚本中设置的变量就会在外壳程序的生命周期内持续存在。


1
“仅在脚本的持续时间内设置变量(在这种情况下为.bashrc)”这是错误的/令人误解的。以这种方式设置的变量将保留在读取.bashrc的交互式外壳中。
伊恩·凯灵

PS1是要导出为环境变量的变量的不良示例。它仅对作为shell的子进程有意义,并且对不同的shell(例如bash和dash)的解释也不同。最佳做法是在中将其简单地设置为常规shell变量.bashrc。环境变量的更好的例子包括HOMEPATHEDITOR
安东尼纪勤

10

两者似乎都可以正常工作,但是使用export可以确保该变量可用于子shell和其他程序。要对此进行测试,请尝试此。

将这两行添加到您的.bashrc文件中

TESTVAR="no export"
export MYTESTVAR="with export"

然后打开一个新的外壳。

运行echo $TESTVARecho $MYTESTVAR显示每个变量的内容。现在,在同一外壳程序中,从您的.bashrc文件中删除这两行,然后运行bash以启动子外壳程序。

运行echo $TESTVAR中将有一个空的输出,但运行echo $MYTESTVAR中将显示“ with export”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.