问题描述
如何在Ubuntu中将目录添加到$PATH
中并使更改永久化?
最佳解决方案
使用〜/.profile来设置$ PATH
在.bash_profile
中设置的路径只能在bash登录shell(bash -l
)中设置。如果您将自己的路径放在.profile
中,它将可用于完整的桌面会话。这意味着即使是元城将会使用它。
例如~/.profile
:
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
顺便说一下,您可以通过查看/proc/[pid]/environ
中的环境来检查进程的PATH变量。 (用ps axf
中的编号替换[pid])
注意:
如果存在.bash_profile
或.bash_login
,则bash
作为登录shell不会解析.profile
。来自man bash
:
it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.
有关.pam_environment
的信息,请参阅answers below,或者对于交互式non-login shell ,请参阅.bashrc
,或者通过将脚本放入/etc/profile.d/
或使用/etc/X11/Xsession.d/
影响显示管理器会话来为所有用户全局设置该值。
次佳解决方案
在您的主目录中编辑.bashrc
并添加以下行:
export PATH="/path/to/dir:$PATH"
您将需要获取.bashrc
或注销/登录(或重新启动终端)以使更改生效。要输入您的.bashrc
,只需输入
$ source ~/.bashrc
第三种解决方案
定义适用于所有用户的永久system-wide环境变量的推荐位置在:
/etc/environment
(这是默认的PATH
定义的地方)
这可以在桌面或控制台,gnome-terminal或TTY,雨或闪耀;)
-
要编辑,请按
Alt
+F2
并键入:gksudo gedit /etc/environment
(或在您最喜欢的文本编辑器中使用
sudo
打开文件)
要执行更改,请运行. /etc/environment
。由于该文件只是一个简单的脚本,它将运行并将新路径分配给PATH
环境变量。检查运行环境并查看清单中的PATH
值。
有关:
第四种方案
我认为在Ubuntu中的规范方式是:
-
在
/etc/profile.d/
下创建一个新文件sudo vi /etc/profile.d/SCRIPT_NAME.sh
-
在那里添加:
export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
-
并给它执行权限
sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
第五种方案
对于更加适合GUI的全新手(比如我):
-
打开您的
$HOME
文件夹。 -
转到查看→显示隐藏文件或按
Ctrl
+H
。 -
右键单击
.profile
,然后单击使用文本编辑器打开。 -
滚动到底部并添加
PATH="$PATH:/my/path/foo"
。 -
保存。
-
注销并重新登录以应用更改(让Ubuntu实际加载
.profile
)。
第六种方案
仅适用于特定用户的持久性环境变量。我强烈推荐Ubuntu官方文档。
https://help.ubuntu.com/community/EnvironmentVariables
参考上面的文档,我已经通过以下方式设置了我的Android SDK path-tools:
-
在主目录中创建
~/.pam_environment
文件。 -
其内容是
PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
。 -
可以通过用冒号(:)分隔路径来添加额外的自定义用户路径。
-
这需要re-login,这意味着您需要log-out和log-in回到桌面环境。
第七种方案
将该行放入您的~/.bashrc
文件中。
无论何时您打开终端,它都会来源
编辑:基于下面的评论,对于适用于所有shell的更一般设置(包括当您在Unity中打Alt
– F2
时),将该行添加到您的~/.profile
文件中。但是可能不应该这样做,因为如果打开终端,路径将被添加两次到PATH
环境。
第八种方案
要设置系统范围,请将export PATH=/path/you're/adding:$PATH
行追加到/etc/profile
的末尾。
要仅为logged-in用户添加目录,请将同一行附加到~/.bash_profile
。
第九种方案
将它添加到.bashrc中将会起作用,但我认为通过添加以下几行来设置路径变量的更传统方式是.bash_profile。
PATH=$PATH:/my/path/foo
export PATH
根据this thread,它看起来好像Ubuntu的行为与RedHat和克隆略有不同。
第十种方案
sudo vi /etc/profile.d/SCRIPT_NAME.sh
在那里添加
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH