设置每个用户 shell 独立的环境变量

设置每个用户 shell 独立的环境变量

如何为每个用户设置一个独立于所使用的 shell 的永久环境变量(bashzshfish)?

答案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...),并且它们从不同的文件读取配置,因此没有一致的方法那里也有。

相关内容