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