用于非登录 shell 的系统范围 ${PATH}(在 Debian 中)

用于非登录 shell 的系统范围 ${PATH}(在 Debian 中)

我看到已经有人问过类似的问题,但我认为问题仍然存在。

我做了一个标准的事情,在目录中添加了一个软件/opt/。说,走吧。/opt/go是主目录,也是/opt/go/bin二进制文件所在的位置。

问题:如何在系统范围内$PATH扩展未登录贝壳。用户登录并单击终端图标后,将启动非登录 shell。此时用户PATH应该包含 Go 二进制文件。

我试过:

  • /etc/profile.d/不起作用,因为非登录 shell 不会读取它。
  • /etc/environment.d无法使用变量,因此PATH="${PATH}:/opt/go/bin"不起作用。我还将添加更多路径。 root 有何不同PATH
  • /etc/login.defs当用户位于 LDAP 中或由于某些其他原因时不会读取。

奇怪或笨拙的解决方案可能部分有效:

  • 修改 sheel.rc全局文件,例如bash.bashrc,但它有点错误,并且无法在更新中保存。目录.d/*是解决这些问题的好方法。而且贝壳有很多。
  • 与之前没有从其他地方设置值的集合/etc/environment.d/一起使用: 。 root 有何不同?PATHPATHPATH=/usr/local/bin:/usr/bin:...PATH
  • 中的符号链接二进制文件/usr/local/bin,但是对于数十个二进制文件,这并不是一件令人愉快的事情。

最后,唯一有效的方法:

  • 使用/etc/X11/Xsession.d/目录。我只是添加了将放置在目录中的相同文件/etc/profile.d/,并且PATH已针对 GUI 环境正确设置了该文件。并且与 TTY 不冲突,由/etc/profile.d/.

为什么我一开始就写到问题仍然存在?因为/etc/X11/Xsession.d/这样做似乎是一个奇怪的地方。难道真的没有更好/正确的方法来做到这一点吗?管理员为他的用户设置系统范围PATH似乎是一件常见的事情:)或者我真的在这里缺少一个明显的解决方案吗?

亲切的问候
卡米尔

相关内容