前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在 Linux/Unix 中永久设置 $PATH

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

作者头像
程序熵
发布2024-10-23 14:40:51
760
发布2024-10-23 14:40:51
举报
文章被收录于专栏:技术汇

问题

在 Linux 上,我如何将一个目录添加到 $PATH 中,以便在不同的会话中持续有效?

背景:

我正尝试将一个目录添加到我的路径中,以便它将始终在我的 Linux PATH 中。我已经试过:

代码语言:javascript
复制
export PATH=$PATH:/path/to/dir

这样做有效,但是每次我退出终端并启动一个新的终端实例时,这个路径就会丢失,我需要再次运行 export 命令。

我该如何做才能使这个设置永久生效?

回答

有多种方法可以实现。实际的解决办法取决于用户意图。

环境变量值通常存储在一个赋值列表中或是在系统或用户会话开始时运行的 shell 脚本中。在 shell 脚本的情况下,必须使用特定的 shell 语法以及 exportset 命令。

系统范围内的方法

1./etc/environment:唯一赋值列表。允许引用。非常适合将像 /usr/local/something/bin 这样的系统级目录添加到 PATH 变量或者定义 JAVA_HOME。由 PAM 和 systemd 使用。 2./etc/environment.d/*.conf:唯一赋值列表。用途同上。配置可以拆分成多个文件,通常每个工具(如 Java、Go 和 Node.js)一个文件。由 systemd 使用,设计上不会将这些值传递给用户的登录 shell。 3./etc/xprofile:在启动 X Window System 会话时执行的 shell 脚本。这是为登录到 X Window 系统的每个用户运行的。对于每个用户都有效的 PATH 条目,如 /usr/local/something/bin,这是一个很好的选择。该文件被其他脚本包含,因此使用 POSIX shell 语法,而不是你的用户 shell 语法。 4./etc/profile/etc/profile.d/*:shell 脚本。这是 shell-only 系统的一个好选择。这些文件仅由处于登录模式的 shell 读取。 5./etc/<shell>.<shell>rc:shell 脚本。这是一个较差的选择,因为它只适用于单一 shell。用于非登录模式。

用户会话范围内的方法

1.~/.pam_environment:唯一赋值列表,不允许引用。由 PAM 在每个用户会话开始时加载,无论它是 X Window System 会话还是 shell。不能引用其他变量,包括 HOMEPATH,因此用途有限。由 PAM 使用。 2.~/.xprofile:shell 脚本。当用户登录到 X Window System 系统时执行。在这里定义的变量对每一个 X 应用程序都是可见的。非常适合扩展 PATH,如加入 ~/bin~/go/bin 或者定义用户特定的 GOPATHNPM_HOME。此文件由其他脚本包含,因此应使用 POSIX shell 语法而非用户 shell 的语法。通过快捷方式启动的图形文本编辑器或 IDE 将看到这些值。 3.~/.profile~/.<shell>_profile~/.<shell>_login:shell 脚本。仅对从终端或终端模拟器启动的程序可见。适用于 shell-only 系统。由处于登录模式的 shell 使用。 4.~/.<shell>rc:shell 脚本。它只适用于单一 shell。由处于非登录模式的 shell 使用。 如果你主要使用一个特定的 shell(如 bash、zsh 等),那么你可以在这个文件中为该 shell 进行个性化设置,而不影响其他 shell。对于那些只需要在非登录 shell 中生效的设置,使用 ~/.<shell>rc 可以避免在全局配置文件中添加额外的条件判断,从而使配置更加简洁。

参考

•stackoverflow question 14637979•man environment•man environment.d

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序熵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 回答
    • 系统范围内的方法
      • 用户会话范围内的方法
      • 参考
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档