如何将目录添加到PATH?
如何将目录添加到Ubuntu中的$PATH
并使更改永久化?
使用〜/ .profile设置$ PATH
在.bash_profile
设置的路径只能在bash登录shell( bash -l
)中设置。 如果您将路径放在.profile
,它将可用于您的完整桌面会话。 这意味着即使是metacity也会使用它。
例如~/.profile
:
if [ -d "$HOME/bin" ] ; then PATH="$PATH:$HOME/bin" fi
顺便说一句,你可以通过查看/proc/[pid]/environ
来检查进程的PATH变量(用ps axf
的数字替换[pid])。 例如,使用grep -z "^PATH" /proc/[pid]/environ
注意:
如果存在.bash_profile
或.bash_login
bash
作为登录shell不会解析.profile
。 来自man bash
:
它按顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在且可读的第一个命令中读取和执行命令。
有关交互式非登录shell的.pam_environment
或.bashrc
信息,请参阅以下答案 ,或者通过将脚本放入/etc/profile.d/
或使用/etc/X11/Xsession.d/
为所有用户设置全局值。 /etc/X11/Xsession.d/
影响显示管理器会话。
在主目录中编辑.bashrc
并添加以下行:
export PATH="/path/to/dir:$PATH"
您需要获取.bashrc
或logout / login(或重新启动终端)以使更改生效。 要获取.bashrc
,只需输入
$ source ~/.bashrc
定义适用于所有用户的永久性系统范围环境变量的建议位置是:
/etc/environment
(这是定义默认PATH
位置)
这将适用于桌面或控制台,gnome-terminal或TTY,风雨无阻;)
-
要进行编辑,请按Alt + F2并键入:
gksudo gedit /etc/environment
(或在您喜欢的文本编辑器中使用
sudo
打开文件)
要进行更改,请运行. /etc/environment
. /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路径工具 :
- 在主目录中创建
~/.pam_environment
文件。 - 其内容是
PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
。 - 可以通过使用冒号(:)分隔路径来添加其他自定义用户路径。
- 这需要重新登录 ,这意味着您需要注销并登录到桌面环境。
将该行放在~/.bashrc
文件中。
无论何时打开终端,它都会被获取
编辑 :根据下面的注释,对于适用于所有shell的更一般的设置(包括在Unity中按Alt – F2时),将行添加到~/.profile
文件中。 但是,可能不应该同时执行这两个操作,因为如果打开终端,路径将被添加到PATH
环境两次。
要在系统范围内设置它,请将行export PATH=/path/you're/adding:$PATH
到/etc/profile
的末尾。
要仅为登录用户添加目录,请将相同的行追加到~/.bash_profile
。
将它添加到.bashrc会有效,但我认为设置路径变量的更传统的方法是在.bash_profile中添加以下行。
PATH=$PATH:/my/path/foo export PATH
根据这个post ,似乎Ubuntu的行为与RedHat和克隆略有不同。
在终端中, cd
到the_directory_you_want_to_add_in_the_path
echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc
这不是我的想法。 我在这里找到了这种导出路径的方法。
sudo vi /etc/profile.d/SCRIPT_NAME.sh
加上那里
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
每当我“安装”我的BASH脚本文件夹时,我都会按照最新版本的Ubuntu中大多数.profile文件中的$HOME/bin
文件夹的测试模式。 我设置了一个看起来像的测试
if [ -d "/usr/scripts" ]; then PATH="/usr/scripts:$PATH" fi
它只能在100%的时间内工作,让我可以在GUI文本编辑器中自由更改它,快速“全部替换”,如果我决定移动/scripts
更接近我的$HOME
文件夹。 我没有在6个Ubuntu安装中这样做,但是“总是明天”。 小号
BZT
打开终端,输入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
的推荐方法是/etc/environment
文件
/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"
然后,重新启动您的PC。
系统范围的环境变量
适用于整个系统(而不仅仅是特定用户)的环境变量设置的合适文件是/ etc / environment。 另一种方法是在/etc/profile.d目录中为此目的创建一个文件。
在/ etc /环境
此文件专门用于系统范围的环境变量设置。 它不是一个脚本文件,而是由赋值表达式组成,每行一个。
注意:变量扩展在/ etc / environment中不起作用。
更多信息可以在这里找到: EnvironmentVariables
把它放到~/.bashrc
或whatevershell你使用rc(或前面提到的~/.profile
)和~/.xsessionrc
这样它也可以在X(shell)中工作。
即使系统脚本不使用它,在任何想要向PATH环境变量添加路径(例如, $HOME/bin
)的情况下,都应该使用
PATH="${PATH:+${PATH}:}$HOME/bin"
用于追加(而不是PATH="$PATH:$HOME/bin"
),和
PATH="$HOME/bin${PATH:+:${PATH}}"
用于前置(而不是PATH="$HOME/bin:$PATH"
)。
当$PATH
最初为空时,这可以避免虚假的前导/尾随冒号,这可能会产生不良影响。
参见例如https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-leading-colon-if-unset
对于Ubuntu,编辑~/.bashrc
并添加以下行。
. ~/.bash_profile
然后根据需要编辑.bash_profile …..