![设置每个用户 shell 独立的环境变量](https://linux22.com/image/192354/%E8%AE%BE%E7%BD%AE%E6%AF%8F%E4%B8%AA%E7%94%A8%E6%88%B7%20shell%20%E7%8B%AC%E7%AB%8B%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
如何为每个用户设置一个独立于所使用的 shell 的永久环境变量(bash
、zsh
和fish
)?
答案1
编辑:根据设置环境变量的最佳发行版/与 shell 无关的方法是什么?,对此最好的解决方案是~/.pam_environment
编辑:恢复到 hacky 解决方案,因为~/.profile
并非所有 shell 都读取:
所有shell源码/etc/profile
。
这意味着/etc/profile
,你可以放一行像
. $HOME/.custom-profile
~/.custom-profile
然后,您可以为每个用户添加变量
答案2
所有 shell 都会读取不同的每个用户配置文件(zsh:~/.profile、bash:~/.bash_profile、csh 只有一个 rc 文件,等等)。所以你必须改变所有这些潜在的候选人。
然而,大多数 shell 至少会退回到读取 ~/.profile (感谢 @terdon 指出了这一点!),所以这就是您可以放置导出的位置。
由于“登录”通常是由能够更改其 uid 和 gid 的进程(通常:以 root 身份运行的登录管理器)完成的,因此由这些程序来定义生成程序的环境(例如 shell)。
但是:有不止一个登录管理器(您的 GDM/lightdm/KDM/... 可视化登录管理器、getty、logind/loginct、ssh、getty...),并且它们从不同的文件读取配置,因此没有一致的方法那里也有。