问题描述
我想添加一个目录来搜索我的搜索路径。我知道我必须修改PATH
环境变量。但是,我希望更改是永久性的,以便它始终生效,对于我打开的每个终端(bash)窗口。
https://help.ubuntu.com/community/EnvironmentVariables中存在令人困惑且可能存在冲突信息的过载
我正在使用Ubuntu 10.04。假设我想将/usr/local/foo
添加到我的PATH
中。我应该修改哪个文件(.bashrc
,.profile
,.bash_login
等…)以及新行应该是什么样的?
最佳解决思路
以下命令添加当前路径的路径:
export PATH=$PATH:/my/custom/path
如果您希望您的设置每次都执行此命令,则可以在许多地方放置它。登录时,将按以下顺序执行以下脚本:
/etc/profile (which starts by loading everything in /etc/profile.d)
~/.profile (which starts by loading ~/.bashrc if you are running bash)
笔记
-
仅当
~/.bash_profile
和~/.bash_login
不存在时才加载~/.profile
。否则,至少bash,将加载它们。建议使用.profile
而不是bash特定脚本。因此,如果在这些尝试中您创建了.bash_login
,请立即将其删除。 -
只有在运行交互式会话时才会加载
~/.bashrc
。 (带有提示的东西,你可以在其中输入内容)。 -
每次打开新终端时,
~/.bashrc
都会反复加载。因此,gnome-terminal中的新选项卡,新的虚拟终端等等。因此,即使您不再次登录,每次打开新shell时都会加载.bashrc
(从而重置其环境)。 -
像byobu这样的东西应该真的进入
.profile
,(否则它将无法工作;-) -
如果您希望它们在交互式会话之外工作,那么路径之类的内容应该进入
.profile
。 (比如你在GNOME中按Alt
+F2
)
次佳解决思路
我通过修改~/.profile
来实现它
看起来像添加〜/bin到我的路径是个坏例子,因为〜/.profile中已经有代码自动执行,如果目录存在的话。
要将usr /local /foo目录添加到我前进的每个会话的路径中,我在.profile的末尾添加/编辑以下行:
export PATH=$PATH:/usr/local/foo
但是,为了使这个生效,我需要注销并重新登录(只需关闭终端窗口并打开一个新窗口不起作用)。
第三种解决思路
要重新加载.profile并在没有注销/登录的情况下获取更改效果,请运行:
source ~/.profile
第四种思路
您可以添加/etc/environment
的路径,但请注意,没有shell扩展可以工作;变量将按字面设置您输入的字符。