it-swarm.cn

如何修改PATH以便在每个终端会话中都可以进行更改

我想添加一个目录来搜索我的搜索路径。我知道我必须修改PATH环境变量。但是,我希望更改是永久性的,以便它始终有效,对于我打开的每个终端(bash)窗口。

https://help.ubuntu.com/community/EnvironmentVariables 有一个令人困惑和可能相互冲突的信息超载

我正在使用Ubuntu 10.04。假设我想将/usr/local/foo添加到我的PATH。我应该修改哪个文件(.bashrc.profile.bash_login等...)以及新行应该是什么样的?

54
Joshua Flanagan

以下命令添加当前路径的路径:

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)

  • ~/.profile仅在~/.bash_profile~/.bash_login不存在时加载。否则,至少bash会改为加载它们。建议使用.profile而不是bash特定脚本。所以,如果在这些尝试中你创建了.bash_login请立即删除它。

  • 只有在运行交互式会话时才会加载~/.bashrc。 (带有提示的东西,你可以在其中实际输入内容)。

  • ~/.bashrc一次又一次地加载,每次打开一个新的终端。因此,gnome-terminal中的新选项卡,新的虚拟终端等等。因此,即使您不再次登录,每次打开新Shell时都会加载.bashrc(从而重置其环境)。

  • 像byobu这样的东西应该真正进入.profile,(否则它将无法工作;-)

  • 如果你希望它们在交互式会话之外工作,那么路径之类的东西应该进入.profile。 (当你按下时说 Alt+F2 在GNOME中)

68
Ralf

我通过修改~/.profile让它工作

看起来像添加〜/ bin到我的路径是个坏例子,因为〜/ .profile中已经有代码自动执行,如果目录存在的话。

要将usr/local/foo目录添加到我前进的每个会话的路径中,我在.profile的末尾添加/编辑以下行:

export PATH=$PATH:/usr/local/foo

但是,为了使这个生效,我需要注销并重新登录(只需关闭终端窗口并打开一个新窗口不起作用)。

13
Joshua Flanagan

要重新加载.profile并在不注销/登录的情况下获取更改效果,请运行:

source ~/.profile
4
Bruno Freitas

您可以添加/etc/environment的路径,但要注意没有Shell扩展可以工作;变量将按字面设置您输入的字符。

3
sagarchalise

如果你有ohmyzsh通过终端转到你的主目录并输入

nano .zshrc

在文件的最后输入

export PATH =“$ HOME/directory_to_include_in_path /:$ PATH”

最后重新启动终端。为我工作。希望这有用。

0
Vallie

您可以修改.bashrc目录中的$HOME文件。

在此文件的最后,添加以下行:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

您还可以在.profile目录中修改$HOME文件,包括以下行:

PATH="$HOME/directory_to_include_in_path/:$PATH"

这对我有用。

0
Denner Vieira