在 Linux 上,如何将目录添加到 $PATH 以便它在不同的会话中保持不变?
我正在尝试将目录添加到我的路径中,以便它始终位于我的 Linux 路径中。我试过了:
export PATH=$PATH:/path/to/dir
这可行,但是每次我退出终端并启动一个新的终端实例时,这条路径都会丢失,我需要再次运行导出命令。
我该怎么做才能永久设置?
有多种方法可以做到这一点。实际的解决方案取决于目的。
变量值通常存储在分配列表或在系统或用户会话开始时运行的 shell 脚本中。对于 shell 脚本,您必须使用特定的 shell 语法和export/或set命令。
export
set
/etc/environment唯一任务列表。允许引用。非常适合添加系统范围的目录/usr/local/something/bin,例如PATH变量或定义JAVA_HOME. 由PAM和systemd使用。
/etc/environment
/usr/local/something/bin
PATH
JAVA_HOME
/etc/environment.d/*.conf唯一任务列表。允许引用。非常适合添加系统范围的目录/usr/local/something/bin,例如PATH变量或定义JAVA_HOME. 配置可以拆分为多个文件,通常每个工具(Java、Go 和 Node.js)一个文件。由 systemd 使用,设计上不会将这些值传递给用户登录 shell。
/etc/environment.d/*.conf
/etc/xprofile启动 X Window 系统会话时执行的 Shell 脚本。这是为每个登录到 X Window System 的用户运行的。PATH对于对每个用户都有效的条目来说,这是一个不错的选择,例如/usr/local/something/bin. 该文件包含在其他脚本中,因此请使用 POSIX shell 语法而不是用户 shell 的语法。
/etc/xprofile
/etc/profile和/etc/profile.d/*外壳脚本。对于纯 shell 系统,这是一个不错的选择。这些文件只能由登录模式下的 shell 读取。
/etc/profile
/etc/profile.d/*
/etc/<shell>.<shell>rc. 外壳脚本。这是一个糟糕的选择,因为它是特定于单个 shell 的。在非登录模式下使用。
/etc/<shell>.<shell>rc
~/.pam_environment. 唯一分配列表,不允许引用。由 PAM 在每个用户会话开始时加载,与 X Window 系统会话或 shell 无关。您不能引用其他变量,包括HOME或PATH因此它的用途有限。由 PAM 使用。
~/.pam_environment
HOME
~/.xprofile外壳脚本。这在用户登录 X Window System 系统时执行。此处定义的变量对每个 X 应用程序都是可见的。PATH使用诸如~/binor~/go/bin或定义用户特定GOPATHor之类的值进行扩展的完美选择NPM_HOME。该文件包含在其他脚本中,因此请使用 POSIX shell 语法而不是用户 shell 的语法。通过快捷方式启动的图形文本编辑器或 IDE 将看到这些值。
~/.xprofile
~/bin
~/go/bin
GOPATH
NPM_HOME
~/.profile, ~/.<shell>_profile, ~/.<shell>_loginShell 脚本。它仅对从终端或终端仿真器启动的程序可见。对于纯 shell 系统来说,这是一个不错的选择。由 shell 在登录模式下使用。
~/.profile
~/.<shell>_profile
~/.<shell>_login
~/.<shell>rc. 外壳脚本。这是一个糟糕的选择,因为它是特定于单个 shell 的。由非登录模式下的 shell 使用。
~/.<shell>rc
Wayland上的GNOME启动用户登录 shell 来获取环境。~/.profile它有效地使用~/.<shell>_profile了登录 shell 配置~/.<shell>_login文件。