现在应该使用哪个配置文件进行 Ubuntu 中的全局设置(/etc/profile 未被引用)?

现在应该使用哪个配置文件进行 Ubuntu 中的全局设置(/etc/profile 未被引用)?

我有一个带图形桌面的 Ubuntu 工作站。我还允许其他一些用户远程访问它。我有一组通用别名、PATH 和设置(包括系统范围的 conda 安装),我想将它们自动应用于所有用户(而不是~/.profile~/.bashrc每个用户单独设置)。在过去(ubuntu 14.04),我可以简单地添加应用这些设置的相应脚本/etc/profile.d/,它们会在登录时通过自动获取/etc/profile

但是,我最近升级到了 Ubuntu 20.04(是的,晚了,但迟到总比不到好...),现在看来,/etc/profile.d对于本地登录图形桌面的用户来说,它没有来源?

我见过解决方案\etc\profile其中包括添加一行/etc/init.d/mdm,但对我来说这似乎是一种黑客攻击,并且在任何方面都不直观(例如,如果我使用不同的显示管理器,是否需要编辑不同的文件?)。

当前要编辑哪个文件才能将设置应用到全部用户,不管他们是通过图形用户界面本地登录还是通过命令行远程登录?

答案1

如果希望每个用户都拥有相同的配置文件和 bashrc 设置,只需将这些文件符号链接到同一版本即可。例如,将 root 用户的原始文件打开/root/.bashrc,然后使用以下命令链接它们:

ln -s /root/.bashrc $HOME/.bashrc

或者更好的是,创建一个共享/srv文件夹,并在其中创建一个名为的文件夹dotfiles,您将所有文件保存在该文件夹中,并且可以选择(但推荐)使用 git 对所有点文件进行版本控制。

答案2

可以使用选项编译 Bash -DSYS_BASHRC(Ubuntu 中应该是这种情况),使其为交互式 shell 提供系统范围的 rc 文件。路径通常为/etc/bash.bashrc

对于应在非交互式 shell 中应用的“设置”(顺便说一下,这是一个相当模糊的词),可能应该在需要它们的任何脚本本身中设置。(除非脚本始终从交互式 shell 运行,并且可以从中继承设置。)

虽然您可能能够在由登录 shell 提供的配置文件之一中“设置”此类内容,但在某些情况下您可能无法使用登录 shell“登录”(我不知道是否是您的这种情况,但我至少可以想到一个,您有 x11vnc 和由 systemd 用户服务启动的专用 Xvfb,然后您使用 VNC 客户端进行远程登录)。

不过至少有一个例外,那就是环境变量(例如PATH)。为此,您可能需要查看以下方法假设您/Ubuntu 正在使用 systemd,那么这可能就是您想要研究的内容,如果您运行的程序根本不涉及 shell,例如 GUI 程序和 systemd 用户单元。

相关内容