在Ubuntu中,PATH变量在哪里设置?

12 浏览
0 Comments

在Ubuntu中,PATH变量在哪里设置?

这个问题已经有答案了:

如何在Linux / Unix上永久设置$PATH [关闭]

当我为Linux创建命令行应用程序工具时,无意中发现这是一个非常有趣的问题。不幸的是,对于那些想要以编程方式修改路径的人来说,SO上的答案在其他问题的众多答案中太隐藏了,因此我决定在SO上提出另一个问题。

admin 更改状态以发布 2023年5月23日
0
0 Comments

临时更改:

~$ export PATH=$PATH:~/root/scripts

如果要进行永久更改,可以像下面这样将此行添加到 /etc/environment 文件中:

PATH=$PATH:~/root/scripts

0
0 Comments

Grzegorz Żur's answer 对另一个问题做出了精彩的解答。不幸的是,它被淹没在众多其他答案中。

有多种方法可以实现。实际解决方案取决于用途。

变量值通常存储在指派列表或在系统或用户会话启动时运行的 shell 脚本中。
对于 shell 脚本,必须使用特定的 shell 语法。

系统范围

  1. /etc/environment 唯一指派项列表。非常适合将系统范围的目录(如 /usr/local/something/bin)添加到 PATH
    变量中,或定义 JAVA_HOME
  2. /etc/xprofile 在启动 X Window System 会话时执行的 shell 脚本。对于每个登录到 X Window
    System 的用户都会执行。这是一个适合所有用户的 PATH 登录的好选择,如 /usr/local/something/bin。文件由
    其他脚本包含,因此使用 POSIX shell 语法而不是用户 shell 的语法。
  3. /etc/profile/etc/profile.d/* shell 脚本。这是一个适用于仅 shell 的系统。这些文件只由 shell 读取。
  4. /etc/.rc shell 脚本。这是一个糟糕的选择,因为它是单个 shell 特定的。

/etc/environment 不是脚本文件,而是由赋值表达式组成的单行表达式。由于此文件存储系统范围的区域设置和路径设置,因此它是最常引用的选择。
不建议使用 /etc/profile。它只存在于指向 /etc/bash.bashrc 并从 /etc/profile.d 中收集条目。

用户会话

  1. ~/.pam_environment。唯一的指派列表。由 PAM 在每个用户会话开始时加载,无论它是 X
    Window System 会话还是 shell。您无法引用其他变量,包括 HOMEPATH,因此使用有限。
  2. ~/.xprofile shell 脚本。当用户登录到 X Window System 系统时执行。在此定义的变量对每个 X 应用程序可见。完美的选择是扩展 PATH 值,例如 ~/bin~/go/bin,或定义特定于用户的 GOPATH
    NPM_HOME。文件由其他脚本包含,因此使用 POSIX shell
    语法而不是用户 shell 的语法。通过快捷方式启动的图形文本编辑器
    或 IDE 将看到这些值。
  3. ~/.profile shell 脚本。仅在从终端或终端模拟器启动的程序中可见。这适用于仅 shell 的系统。
  4. ~/.rc shell 脚本。这是一个糟糕的选择,因为它是单个 shell 特定的。
0