如何将目录添加到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的完全新手(比如我):

  1. 打开$HOME文件夹。
  2. 转到视图显示隐藏文件或按Ctrl + H.
  3. 右键单击.profile ,然后单击“ 使用文本编辑器打开”
  4. 滚动到底部并添加PATH="$PATH:/my/path/foo"
  5. 保存。
  6. 注销并重新登录以应用更改(让Ubuntu实际加载.profile )。

仅适用于特定用户可用的持久性环境变量。 我强烈推荐Ubuntu官方文档。

https://help.ubuntu.com/community/EnvironmentVariables

参考上面的文档,我已经设置了我的Android SDK路径工具

  1. 在主目录中创建~/.pam_environment文件。
  2. 其内容是PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
  3. 可以通过使用冒号(:)分隔路径来添加其他自定义用户路径。
  4. 这需要重新登录 ,这意味着您需要注销并登录到桌面环境。

将该行放在~/.bashrc文件中。

无论何时打开终端,它都会被获取

编辑 :根据下面的注释,对于适用于所有shell的更一般的设置(包括在Unity中按AltF2时),将行添加到~/.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和克隆略有不同。

在终端中, cdthe_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 …..