在Linux上,如何将一个目录添加到$PATH,以便在不同的会话中保持持久性?

背景

我试图添加一个目录到我的路径,所以它将永远在我的Linux路径。我试过了:

export PATH=$PATH:/path/to/dir

这是有效的,但是每当我退出终端并启动一个新的终端实例时,这个路径就丢失了,我需要再次运行导出命令。

我怎么做才能永久设置它呢?


当前回答

我认为最优雅的方式是:

将此添加到~/。bashrc文件。( 执行如下命令: 中~ / . bashrc 在里面添加你的路径: 导出路径= $路径:/ bin / opt /节点 源~ / . bashrc

(Ubuntu)

其他回答

可以通过以下命令直接添加:

echo 'export PATH=$PATH:/new/directory' >> ~/.zshrc
source ~/.zshrc

有很多种方法。实际的解决方案取决于目的。

变量值通常存储在赋值列表中或在系统或用户会话开始时运行的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的区别?

假设你运行的是macOS。您有一个信任的二进制文件,并希望在整个系统中可用,但不一定希望将二进制文件所在的目录添加到PATH中。

您可以选择复制/移动二进制文件到/usr/local/bin,它应该已经在您的PATH中。这将使二进制可执行文件与您在终端中已经访问的任何其他二进制文件一样。

在/etc/profile中添加脚本[name_of_script].shD文件夹用的行:

export PATH=$PATH:/dir

/etc/profile中的每个脚本D文件夹在登录时由/etc/profile自动执行。

添加导出命令的文件取决于您是处于登录模式还是非登录模式。

如果您处于登录模式,您要查找的文件是/etc/bash或/etc/bash.bashrc。

如果处于非登录模式,则要查找文件/。Profile或/.profiles.d目录下的文件

上面提到的文件就是系统变量所在的地方。