在Linux上,如何将一个目录添加到$PATH,以便在不同的会话中保持持久性?
背景
我试图添加一个目录到我的路径,所以它将永远在我的Linux路径。我试过了:
export PATH=$PATH:/path/to/dir
这是有效的,但是每当我退出终端并启动一个新的终端实例时,这个路径就丢失了,我需要再次运行导出命令。
我怎么做才能永久设置它呢?
在Linux上,如何将一个目录添加到$PATH,以便在不同的会话中保持持久性?
背景
我试图添加一个目录到我的路径,所以它将永远在我的Linux路径。我试过了:
export PATH=$PATH:/path/to/dir
这是有效的,但是每当我退出终端并启动一个新的终端实例时,这个路径就丢失了,我需要再次运行导出命令。
我怎么做才能永久设置它呢?
当前回答
添加导出命令的文件取决于您是处于登录模式还是非登录模式。
如果您处于登录模式,您要查找的文件是/etc/bash或/etc/bash.bashrc。
如果处于非登录模式,则要查找文件/。Profile或/.profiles.d目录下的文件
上面提到的文件就是系统变量所在的地方。
其他回答
添加永久路径的一种方法是:
cd /etc/profile.d
touch custom.sh
vi custom.sh
export PATH=$PATH:/path according to your setting/
重启你的电脑,开始吧;路径将永远存在。
对于Bash,可以将导出声明放在~/.bashrc中。例如,我的.bashrc包含这一行:
export PATH=/var/lib/gems/1.8/bin:/home/ash/.bin:$PATH
您可以将这一行添加到控制台配置文件(例如,.bashrc或.profile)。
我的回答是关于在Ubuntu Linux (amd64)上设置Go环境。我曾经遇到过设置环境变量(GOPATH和GOBIN)路径的相同麻烦,每次在终端退出时丢失它,并使用source <file_name>重新构建它。
错误在于将路径(GOPATH和GOBIN)放在~/中。bash_profile文件。在浪费了几个小时之后,我发现解决方案是将GOPATH和GOBIN放在~/中。Bash_rc文件的格式如下:
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN
在这样做的过程中,Go安装工作得很好,没有路径丢失。
与此问题相关的原因是,对于非登录shell的设置,比如我们运行Go代码的Ubuntu终端或GNOME终端,是从~。/bash_rc文件和登录shell的设置是从~/中获取的。bash_profile文件。从~/。如果~/. Profile文件。Bash_profile文件不可达。
在Ubuntu中,编辑/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
如果你使用Z shell (zsh),在/etc/zsh/zshenv文件的注释后面添加这一行:
source /etc/environment
我在Ubuntu 15.10 (Wily Werewolf)上遇到了这个小怪癖,但如果你的zsh没有得到正确的PATH,这可能是原因。