协慌网

登录 贡献 社区

如何在 Linux / Unix 上永久设置 $ PATH?

我正在尝试将路径添加到我的路径中,因此它始终位于我的 Linux 路径中。我试过了:

export PATH=$PATH:/path/to/dir

这是有效的,但是每次我退出终端并启动一个新的终端实例时,这个路径都会丢失,我需要再次运行 export 命令。

我怎么能这样做才能永久设置?

答案

您需要将它添加到~/.profile~/.bashrc文件中。

export PATH="$PATH:/path/to/dir"

根据你正在做的事情,你也可能想要符号链接到二进制文件:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

请注意,这不会自动更新会话剩余时间的路径。为此,您应该运行:

source ~/.profile 
or
source ~/.bashrc

在 Ubuntu 中,编辑/etc/environment 。其唯一目的是存储环境变量。最初 $ PATH 变量在这里定义。这是来自我的/etc/environment文件的粘贴:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

因此,您只需以 root 身份打开此文件并添加所需内容即可。

对于立即结果,运行(尝试普通用户 root):

source /etc/environment && export PATH

更新:

如果您使用zsh (又名 Z Shell),请在/etc/zsh/zshenv的注释后面添加此行:

source /etc/environment

我在 Ubuntu 15.10 上遇到了这个小怪癖,但是如果你的zsh没有得到正确的PATH ,这可能就是为什么

有多种方法可以做到这一点。实际的解决方案取决于目的。

变量值通常存储在分配列表或在系统或用户会话开始时运行的 shell 脚本中。如果是 shell 脚本,则必须使用特定的 shell 语法。

系统范围

  1. /etc/environment唯一分配的列表。非常适合将系统范围的目录(如/usr/local/something/binPATH变量或定义JAVA_HOME
  2. /etc/xprofile启动 X Window 系统会话时执行的 Shell 脚本。这是针对登录 X Window System 的每个用户运行的。对于像/usr/local/something/bin这样的每个用户都有效的PATH条目是一个不错的选择。该文件包含在其他脚本中,因此使用 POSIX shell 语法而不是用户 shell 的语法。
  3. /etc/profile/etc/profile.d/* Shell 脚本。对于仅限 shell 的系统,这是一个不错的选择。这些文件只能由 shell 读取。
  4. /etc/<shell>.<shell>rc 。 Shell 脚本。这是一个糟糕的选择,因为它是单壳特定的。

用户会话

  1. ~/.pam_environment 。唯一任务列表。如果它是 X Window System 会话或 shell,则在每个用户会话开始时由PAM加载无关。您不能引用其他变量,包括HOMEPATH因此它的使用有限。
  2. ~/.xprofile Shell 脚本。当用户登录 X Window System 系统时执行此操作。这里定义的变量对每个 X 应用程序都是可见的。使用~/bin~/go/bin GOPATH或者定义用户特定的GOPATHNPM_HOME来扩展PATH完美选择。该文件包含在其他脚本中,因此使用 POSIX shell 语法而不是用户 shell 的语法。您通过快捷方式启动的图形文本编辑器或 IDE 将查看这些值。
  3. ~/.profile Shell 脚本。它仅对从终端或终端仿真器启动的程序可见。对于仅限 shell 的系统,它是一个不错的选择。
  4. ~/.<shell>rc 。 Shell 脚本。这是一个糟糕的选择,因为它是单壳特定的。

分发特定文档