在Linux上,如何将一个目录添加到$PATH,以便在不同的会话中保持持久性?
背景
我试图添加一个目录到我的路径,所以它将永远在我的Linux路径。我试过了:
export PATH=$PATH:/path/to/dir
这是有效的,但是每当我退出终端并启动一个新的终端实例时,这个路径就丢失了,我需要再次运行导出命令。
我怎么做才能永久设置它呢?
在Linux上,如何将一个目录添加到$PATH,以便在不同的会话中保持持久性?
背景
我试图添加一个目录到我的路径,所以它将永远在我的Linux路径。我试过了:
export PATH=$PATH:/path/to/dir
这是有效的,但是每当我退出终端并启动一个新的终端实例时,这个路径就丢失了,我需要再次运行导出命令。
我怎么做才能永久设置它呢?
当前回答
有很多种方法。实际的解决方案取决于目的。
变量值通常存储在赋值列表中或在系统或用户会话开始时运行的shell脚本中。对于shell脚本,您必须使用特定的shell语法和导出或设置命令。
系统范围
/etc/environment List of unique assignments. Allows references. Perfect for adding system-wide directories like /usr/local/something/bin to PATH variable or defining JAVA_HOME. Used by PAM and systemd. /etc/environment.d/*.conf List of unique assignments. Allows references. Perfect for adding system-wide directories like /usr/local/something/bin to PATH variable or defining JAVA_HOME. The configuration can be split into multiple files, usually one per each tool (Java, Go, and Node.js). Used by systemd that by design do not pass those values to user login shells. /etc/xprofile Shell script executed while starting X Window System session. This is run for every user that logs into X Window System. It is a good choice for PATH entries that are valid for every user like /usr/local/something/bin. The file is included by other script so use POSIX shell syntax not the syntax of your user shell. /etc/profile and /etc/profile.d/* Shell script. This is a good choice for shell-only systems. Those files are read only by shells in login mode. /etc/<shell>.<shell>rc. Shell script. This is a poor choice because it is single shell specific. Used in non-login mode.
用户会话
~/.pam_environment. List of unique assignments, no references allowed. Loaded by PAM at the start of every user session irrelevant if it is an X Window System session or shell. You cannot reference other variables including HOME or PATH so it has limited use. Used by PAM. ~/.xprofile Shell script. This is executed when the user logs into X Window System system. The variables defined here are visible to every X application. Perfect choice for extending PATH with values such as ~/bin or ~/go/bin or defining user specific GOPATH or NPM_HOME. The file is included by other script so use POSIX shell syntax not the syntax of your user shell. Your graphical text editor or IDE started by shortcut will see those values. ~/.profile, ~/.<shell>_profile, ~/.<shell>_login Shell script. It will be visible only for programs started from terminal or terminal emulator. It is a good choice for shell-only systems. Used by shells in login mode. ~/.<shell>rc. Shell script. This is a poor choice because it is single shell specific. Used by shells in non-login mode.
笔记
Wayland上的GNOME启动一个用户登录shell来获取环境。它有效地使用登录shell配置~/。简介~ /。<壳> _profile ~ /。<壳> _login文件。
手册页
环境 环境。d https://linux.die.net/man/1/environment.d bash 破折号
特定的文档
Ubuntu Arch Linux
登录Shell和非登录Shell的区别?
其他回答
对于Bash,可以将导出声明放在~/.bashrc中。例如,我的.bashrc包含这一行:
export PATH=/var/lib/gems/1.8/bin:/home/ash/.bin:$PATH
经过这么多的研究,我找到了一个简单的解决方案(我使用的是Elementary OS),灵感来自Flutter - Step by Step Installation on Linux - Ubuntu。
2 .执行以下命令,以编辑方式打开“。bashrc”文件。(你 也可以使用vi或任何其他编辑器)。 ~$ sudo nano ~/.bashrc 在文件末尾添加以下行并保存。 导出路径= " [FLUTTER_SDK_PATH] /颤振/ bin: $路径” 例如: 导出路径= " / home / rageshl / dev /颤振/ bin:美元路径”
我相信这是在Ubuntu发行版中在Flutter中设置路径的永久解决方案。
在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,这可能是原因。
假设你运行的是macOS。您有一个信任的二进制文件,并希望在整个系统中可用,但不一定希望将二进制文件所在的目录添加到PATH中。
您可以选择复制/移动二进制文件到/usr/local/bin,它应该已经在您的PATH中。这将使二进制可执行文件与您在终端中已经访问的任何其他二进制文件一样。
本地用户可在CentOS或redhat Linux (RHEL)上使用:
echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile
这将当前目录(或者您可以使用另一个目录)添加到PATH。这使它成为永久的,但它在下一次用户登录时生效。
如果你不想重新登录,那么你可以使用:
source ~/.bash_profile
这将重新加载#用户特定环境和启动程序。该注释出现在.bash_profile文件中。