我如何在Ubuntu中添加一个目录到$PATH
,并使之永久化?
在.bash_profile
中设置的路径只会在bash登录shell中设置(bash -l
)。
如果你把你的路径放在.profile
中,它将被用于你的整个桌面会话。这意味着即使是metacity也会使用它。
比如说~/.profile
。
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
Btw,你可以通过查看一个进程在/proc/[pid]/environ
中的环境来检查其PATH变量(用ps axf
中的数字替换[pid])。例如,使用grep -z "^PATH" /proc/[pid]/environ
。
如果.bash_profile
或.bash_login
存在的话,bash
作为一个登录外壳不会解析.profile
。从 man bash
:
它寻找~/.bash_profile、~/.bash_login和~/.profile,按照这个顺序 顺序,并从存在的第一个命令中读取和执行 并且是可读的。
关于.pam_environment
的信息,请参见下面的答案,或者.bashrc
用于交互式非登录外壳,或者通过将脚本放入/etc/profile.d/
为所有用户设置全局值,或者使用/etc/X11/Xsession.d/
来影响显示管理器会话。
推荐的定义永久的、适用于所有用户的*系统范围的环境变量的地方是在。
/etc/environment
(默认的 "PATH "就是在这里定义的)
这将在桌面或控制台、gnome-terminal或TTY中工作,风雨无阻;)
gksudo gedit /etc/environment
(或在你喜欢的文本编辑器中用sudo
打开文件)
要进行更改,请运行./etc/environment
。
/etc/environment。 因为这个文件只是一个简单的脚本,它将运行并将新路径分配给
PATH环境变量。 要检查运行env并在列表中查看
PATH`值。
相关链接:
用于只对特定用户可用的持久性环境变量。 我强烈推荐Ubuntu官方文档。
https://help.ubuntu.com/community/EnvironmentVariables
参考上面的文档,我通过以下方式设置了我的Android SDK路径工具。
~/.pam_environment
文件。其内容为PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
。
可以用冒号(:)分隔路径,添加额外的自定义用户路径。
这需要重新登录,这意味着你需要退出并登录回桌面环境。
每当我"安装"
我的BASH脚本文件夹时,我都会按照$HOME/bin
文件夹的测试模式进行测试,这个测试模式在Ubuntu最新版本的大多数.profile文件中都有。
我设置了一个测试,看起来像
if [ -d "/usr/scripts" ]; then
PATH="/usr/scripts:$PATH"
fi
它在100%的时间内都能正常工作,并且让我可以在GUI文本编辑器中用快速的"Replace all"来改变它。
来改变它。如果我决定把/scripts
移到离$HOME
文件夹更近的地方,那么我就可以在GUI文本编辑器中用快速的"Replace all"来改变它。
我在6个Ubuntu安装中还没有这样做,但明天总会有的。
S
BZT
推荐的方法是在/etc/environment
文件中编辑PATH
。
/etc/environment
的输出示例。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
例如,添加新路径/home/username/mydir
。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"
然后,重新启动电脑。
全系统环境变量。
对于影响整个系统(而不仅仅是某个用户)的环境变量设置来说,一个合适的文件是/etc/environment。 另一种方法是在/etc/profile.d目录下创建一个专门的文件。
/etc/environment。
这个文件专门用于系统范围内的环境变量设置。 它不是一个脚本文件,而是由赋值表达式组成,每行一个。
注意:变量扩展在/etc/environment中不起作用。
更多信息可以在这里找到。 环境变量][1]
打开你的终端,输入gedit .profile
并插入以下内容。
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
#the following line add Bin where you dont have a Bin folder on your $HOME
PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"
关闭并打开终端,应该可以工作了。
即使系统脚本不使用这个。
在任何情况下,如果要在PATH环境变量中添加一个路径(例如,$HOME/bin
),应该使用
PATH="${PATH:+${PATH}:}$HOME/bin"
而不是PATH="$PATH:$HOME/bin"
)。
和
PATH="$HOME/bin${PATH:+:${PATH}}"
(而不是PATH="$HOME/bin:$PATH"
)。
这就避免了当$PATH
初始为空时出现虚假的前导/后导冒号,这可能会产生不希望看到的效果。