我看到已经有人问过类似的问题,但我认为问题仍然存在。
我做了一个标准的事情,在目录中添加了一个软件/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 有何不同?PATH
PATH
PATH=/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
似乎是一件常见的事情:)或者我真的在这里缺少一个明显的解决方案吗?
亲切的问候
卡米尔