一尘不染

如何在Linux / Unix上永久设置$ PATH?

linux

我试图将目录添加到我的路径,以便它始终位于我的Linux路径中。我试过了:

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

这可行,但是每次我退出终端并启动新的终端实例时,此路径都会丢失,因此我需要再次运行export命令。

我该如何做才能将其永久设置?


阅读 338

收藏
2020-06-02

共1个答案

一尘不染

有多种方法可以做到这一点。实际解决方案取决于目的。

变量值通常存储在分配列表或在系统或用户会话开始时运行的Shell脚本中。如果使用Shell脚本,则必须使用特定的Shell语法和/
exportset命令。

系统范围

  1. /etc/environment唯一作业列表,允许引用。完善,用于将全系统目录像/usr/local/something/binPATH变量或定义JAVA_HOME。由PAM和SystemD使用。
  2. /etc/environment.d/*.conf唯一作业列表,允许引用。完善,用于将全系统目录像/usr/local/something/binPATH变量或定义JAVA_HOME。可以将配置分为多个文件,通常每个工具(Java,Go,NodeJS)一个文件。由SystemD使用,在设计上不会将这些值传递给用户登录Shell。
  3. /etc/xprofile启动X Window系统会话时执行的Shell脚本。将为每个登录X Window System的用户运行此命令。对于PATH对每个用户都有效的条目,这是一个不错的选择/usr/local/something/bin。该文件包含在其他脚本中,因此请使用POSIX Shell语法而不是用户Shell的语法。
  4. /etc/profile/etc/profile.d/*Shell脚本。对于仅使用shell的系统,这是一个不错的选择。这些文件仅在登录模式下由Shell读取。
  5. /etc/<shell>.<shell>rc。Shell脚本。这是一个糟糕的选择,因为它是特定于单个shell的。在非登录模式下使用。

用户会话

  1. ~/.pam_environment。唯一作业列表,不允许引用。如果是X Window System会话或Shell,则在每个用户会话开始时由PAM加载。您不能引用其他变量,包括HOMEPATH因此用途有限。由PAM使用。
  2. ~/.xprofileShell脚本。当用户登录到X Window System系统时,将执行此操作。此处定义的变量对每个X应用程序都是可见的。PATH用诸如~/bin~/go/bin或定义用户特定GOPATH或的值扩展的完美选择NPM_HOME。该文件包含在其他脚本中,因此请使用POSIX Shell语法而不是用户Shell的语法。通过快捷方式启动的图形文本编辑器或IDE将看到这些值。
  3. ~/.profile~/.<shell>_profile~/.<shell>_loginshell脚本。仅对从终端或终端仿真器启动的程序可见。对于仅使用shell的系统来说,这是一个不错的选择。由Shell在登录模式下使用。
  4. ~/.<shell>rc。Shell脚本。这是一个糟糕的选择,因为它是特定于单个shell的。由Shell在非登录模式下使用。

笔记

Wayland上的Gnome启动用户登录Shell来获取环境。它有效地利用登录shell配置~/.profile~/.<shell>_profile~/.<shell>_login文件。

说明书

  • 环境
  • 环境
  • 重击
  • 短跑

发行特定文档

有关

登录外壳程序和非登录外壳程序之间的区别?

2020-06-02