【问题标题】:Where is PATH variable set in Ubuntu? [duplicate]Ubuntu 中的 PATH 变量设置在哪里? [复制]
【发布时间】:2016-10-07 04:58:58
【问题描述】:

这是我在为 Linux 创建命令行应用程序工具时偶然发现的一个非常有趣的问题。不幸的是,关于 SO 的答案隐藏在对其他问题的无数答案中,以至于我决定为那些想要以编程方式修改 PATH 的人询问关于 SO 的另一个问题。

【问题讨论】:

  • 这不是重复的。他在问路在哪里。不是自己怎么设置的。我想知道相同的答案,因为 Ubuntu 中的某些东西多次向路径添加多个文件夹,而这不是我。值得庆幸的是,这个问题的答案为我提供了我需要的信息(即使它是从副本中复制的...... )。建议:去掉重复的标记,把题名改写更清楚?

标签: linux bash unix ubuntu path


【解决方案1】:

Grzegorz Żur's answer 到另一个问题可以很好地捕捉到它。不幸的是,它被隐藏在许多其他答案中。

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

变量值通常存储在赋值列表中 或在系统或用户启动时运行的 shell 脚本 会议。如果是 shell 脚本,您必须使用特定的 shell 语法。

系统范围

  1. /etc/environment 唯一分配列表。非常适合添加系统范围的目录,例如 /usr/local/something/binPATH 变量或定义JAVA_HOME
  2. /etc/xprofile 在启动 X Window System 会话时执行的 Shell 脚本。这是为每个登录到 X Window 的用户运行的 系统。对于PATH 有效的条目,这是一个不错的选择 每个用户都喜欢/usr/local/something/bin。该文件包含在 其他脚本,所以使用 POSIX shell 语法而不是您的用户的语法 外壳。
  3. /etc/profile/etc/profile.d/* Shell 脚本。对于纯 shell 系统,这是一个不错的选择。这些文件只能由 shell 读取。
  4. /etc/<shell>.<shell>rc。外壳脚本。这是一个糟糕的选择,因为它是特定于单个 shell 的。

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

用户会话

  1. ~/.pam_environment。唯一任务列表。在每个用户会话开始时由PAM 加载,如果它是 X,则无关紧要 窗口系统会话或外壳。您不能引用其他变量 包括HOMEPATH,所以它的用途有限。
  2. ~/.xprofile Shell 脚本。这在用户登录 X Window System 系统时执行。此处定义的变量对 每个 X 应用程序。使用值扩展 PATH 的完美选择 例如~/bin~/go/bin 或定义用户特定的GOPATHNPM_HOME。该文件包含在其他脚本中,因此请使用 POSIX shell 语法不是您的用户外壳的语法。您的图形文本编辑器 或通过快捷方式启动的 IDE 将看到这些值。
  3. ~/.profile Shell 脚本。它仅对从终端或终端仿真器启动的程序可见。是一个不错的选择 仅限 shell 的系统。
  4. ~/.<shell>rc。外壳脚本。这是一个糟糕的选择,因为它是特定于单个 shell 的。

【讨论】:

  • 为什么你要 c+p 回答重复的问题?
  • 围绕这个主题的 SO 上大约有一百万个问题。我问这个问题是因为它可以让开发人员快速找到这个完整且内容丰富的答案......
  • 你从这个问题中得到这个答案的问题更加完整和翔实......
【解决方案2】:

临时更改:

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

对于永久更改,您可以将此行添加到 /etc/environment 文件中,如下所示:

PATH=$PATH:~/root/scripts

【讨论】:

  • 然后 source /etc/environment
猜你喜欢
  • 2017-10-08
  • 2023-04-05
  • 2012-05-21
  • 1970-01-01
  • 2015-12-27
  • 2022-01-15
  • 2013-08-20
  • 2017-04-03
  • 1970-01-01
相关资源
最近更新 更多