使用source更新bash环境变量

时间:2013-10-21 11:15:29

标签: command-line path terminal environment-variables osx-mountain-lion

On OS X Mountain Lion当{em>在.bashrc或.bash_profile中添加某些内容时,source命令似乎只会更新我的路径。如果我删除这些文件中的任何一个的路径,然后使用source进行更新,则删除的路径仍然存在。一个例子......

添加到PATH

中的.bash_profile

terminal

> echo $PATH
> "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin"

添加到.bash_profile

中的路径
export PATH=$PATH:~/Desktop

返回terminal

> source .bash_profile
> echo $PATH
> "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Users/myname/Desktop"

所以,所有这一切都如预期的那样;我的Desktop已添加到我的PATH。现在,我从.bash_profile删除之前添加的路径后,将此文件留空

> source .bash_profile
> echo $PATH
> "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Users/myname/Desktop"

正如您所见,“已删除”路径'/Users/myname/Desktop'仍然存在。我误解了什么 source呢?我认为这相当于打开一个新的终端窗口(确实会返回 我期待的结果 - 即没有桌面路径)

1 个答案:

答案 0 :(得分:0)

当您第一次使用source .bash_profile时,由于来自export PATH=$PATH:~/Desktop文件的.bash_profile行,您的PATH会被重新分配到添加了~/Desktop目录的旧PATH。

当您第二次使用source .bash_profile时,不再重新分配PATH,因为您删除了export PATH=$PATH:~/Desktop行。所以,这次PATH的值保持不变(就像之前一样)。

如果您希望PATH的值返回其初始值,则必须重新启动终端(当前shell)。或者您可以获取/etc/environment文件:

source /etc/environment