如何修改我的 PATH 以便更改在每个终端会话中可用

Jos*_*gan 70 bash environment-variables

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

https://help.ubuntu.com/community/EnvironmentVariables 中有大量令人困惑且可能相互冲突的信息

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

Ral*_*alf 90

以下命令将路径添加到当前路径:

export PATH=$PATH:/my/custom/path
Run Code Online (Sandbox Code Playgroud)

如果你想让你的设置每次都执行这个命令,你可以在很多地方放置它。当您登录时,以下脚本将按此顺序执行:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)
Run Code Online (Sandbox Code Playgroud)

笔记

  • ~/.profile 只有当加载~/.bash_profile~/.bash_login不存在。否则,至少 bash 将改为加载它们。建议使用.profile而不是 bash 特定的脚本。因此,如果您在这些尝试中创建了.bash_login请立即将其删除。

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

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

  • 像byobu这样的东西应该真正进入.profile,(否则它不会起作用;-)

  • .profile如果您希望它们在交互式会话之外工作,则应该进入路径之类的内容。(比如当你在 GNOME 中按Alt+F2时)

  • @JoshuaFlanagan:“PATH”不需要“export”。`PATH` 已经是一个环境变量(而不是 shell 变量) (2认同)

Jos*_*gan 20

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

看起来将 ~/bin 添加到我的路径是一个不好的例子,因为 ~/.profile 中已经有代码可以自动执行此操作(如果目录存在)。

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

export PATH=$PATH:/usr/local/foo
Run Code Online (Sandbox Code Playgroud)

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

  • 设置 `export PATH="$PATH:/usr/foo"`,以防你在 `$PATH` 中有空格或其他特殊字符。 (4认同)
  • 您可以通过键入“. ~/.profile”重新加载当前环境而无需注销 (3认同)

小智 7

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

source ~/.profile
Run Code Online (Sandbox Code Playgroud)

  • 这应该是对先前答案的评论 (2认同)