如何在Linux / Unix上永久设置$ PATH?
我试图添加一个目录到我的路径,所以它会一直在我的Linux路径中。 我试过了:
export PATH=$PATH:/path/to/dir
这是有效的,但是每次我退出终端并启动一个新的终端实例时,该路径都会丢失,我需要再次运行导出命令。
我该怎么做,这将永久设置?
您需要将其添加到~/.profile
或~/.bashrc
文件中。
export PATH=$PATH:/path/to/dir
根据你在做什么,你也可能想要符号链接到二进制文件:
cd /usr/bin
sudo ln -s /path/to/binary binary-name
请注意,这不会自动更新会话剩余部分的路径。 要做到这一点,你应该运行:
source ~/.profile
or
source ~/.bashrc
我不能相信没有人提到/etc/environment
文件。 它唯一的目的是存储环境变量。 最初$ PATH变量是在这里定义的。 这是来自我的/etc/environment
文件的一个粘贴:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
所以你可以打开这个文件作为根,并添加任何你想要的。
要获得即时结果,请运行(以普通用户和root用户身份运行):
source /etc/environment && export PATH
更新:
如果您使用zsh
(又名Z Shell),请在/etc/zsh/zshenv
的注释之后添加此行:
source /etc/environment
我在Ubuntu 15.10上遇到了这个小怪癖,但是如果你的zsh没有得到正确的PATH ,这可能是原因
有多种方式可以做到这一点。 实际的解决方案取决于目的。
变量值通常存储在分配列表或在系统或用户会话开始时运行的shell脚本中。 在shell脚本的情况下,您必须使用特定的shell语法。
系统广泛
/etc/environment
唯一分配的列表。 非常适合将/usr/local/something/bin
等系统级目录添加到PATH
变量或定义JAVA_HOME
。 /etc/xprofile
启动X Window系统会话时执行的Shell脚本。 这是为每个登录到X Window System的用户运行的。 对于每个用户(如/usr/local/something/bin
有效的PATH
条目来说,这是一个不错的选择。 该文件包含在其他脚本中,因此使用POSIX shell语法而不是用户shell的语法。 /etc/profile
和/etc/profile.d/*
Shell脚本。 这对于仅有壳的系统来说是个不错的选择。 这些文件只能被shell读取。 /etc/<shell>.<shell>rc
。 Shell脚本。 这是一个糟糕的选择,因为它是单个特定的外壳。 用户会话
~/.pam_environment
。 独特分配清单。 在每个用户会话开始时由PAM加载,如果它是X Window系统会话或shell,则无关紧要。 您不能引用其他变量,包括HOME
或PATH
因此它的使用受到限制。 ~/.xprofile
Shell脚本。 这是在用户登录到X Window System系统时执行的。 这里定义的变量对每个X应用程序都是可见的。 完美选择使用~/bin
或~/go/bin
GOPATH
来扩展PATH
,或者定义特定GOPATH
用户的GOPATH
或NPM_HOME
。 该文件包含在其他脚本中,因此使用POSIX shell语法而不是用户shell的语法。 通过快捷方式启动的图形文本编辑器或IDE将看到这些值。 ~/.profile
Shell脚本。 只有从终端或终端仿真器启动的程序才可见。 这对于仅壳体系统来说是个不错的选择。 ~/.<shell>rc
。 Shell脚本。 这是一个糟糕的选择,因为它是单个特定的外壳。