在Ubuntu中,PATH变量在哪里设置?
在Ubuntu中,PATH变量在哪里设置?
这个问题已经有答案了:
当我为Linux创建命令行应用程序工具时,无意中发现这是一个非常有趣的问题。不幸的是,对于那些想要以编程方式修改路径的人来说,SO上的答案在其他问题的众多答案中太隐藏了,因此我决定在SO上提出另一个问题。
admin 更改状态以发布 2023年5月23日
Grzegorz Żur's answer 对另一个问题做出了精彩的解答。不幸的是,它被淹没在众多其他答案中。
有多种方法可以实现。实际解决方案取决于用途。
变量值通常存储在指派列表或在系统或用户会话启动时运行的 shell 脚本中。
对于 shell 脚本,必须使用特定的 shell 语法。系统范围
/etc/environment
唯一指派项列表。非常适合将系统范围的目录(如/usr/local/something/bin
)添加到PATH
变量中,或定义JAVA_HOME
。/etc/xprofile
在启动 X Window System 会话时执行的 shell 脚本。对于每个登录到 X Window
System 的用户都会执行。这是一个适合所有用户的PATH
登录的好选择,如/usr/local/something/bin
。文件由
其他脚本包含,因此使用 POSIX shell 语法而不是用户 shell 的语法。/etc/profile
和/etc/profile.d/*
shell 脚本。这是一个适用于仅 shell 的系统。这些文件只由 shell 读取。/etc/
shell 脚本。这是一个糟糕的选择,因为它是单个 shell 特定的。. rc
/etc/environment
不是脚本文件,而是由赋值表达式组成的单行表达式。由于此文件存储系统范围的区域设置和路径设置,因此它是最常引用的选择。
不建议使用 /etc/profile
。它只存在于指向 /etc/bash.bashrc
并从 /etc/profile.d
中收集条目。
用户会话
~/.pam_environment
。唯一的指派列表。由 PAM 在每个用户会话开始时加载,无论它是 X
Window System 会话还是 shell。您无法引用其他变量,包括HOME
或PATH
,因此使用有限。~/.xprofile
shell 脚本。当用户登录到 X Window System 系统时执行。在此定义的变量对每个 X 应用程序可见。完美的选择是扩展PATH
值,例如~/bin
或~/go/bin
,或定义特定于用户的GOPATH
或
NPM_HOME
。文件由其他脚本包含,因此使用 POSIX shell
语法而不是用户 shell 的语法。通过快捷方式启动的图形文本编辑器
或 IDE 将看到这些值。~/.profile
shell 脚本。仅在从终端或终端模拟器启动的程序中可见。这适用于仅 shell 的系统。~/.
shell 脚本。这是一个糟糕的选择,因为它是单个 shell 特定的。rc