我目前正在尝试设置一些 bash 定义(函数、变量),这些定义需要可供访问工作站的所有用户使用。我在 /etc/profile.d/ 目录中创建了扩展名为 .sh 的 shell 脚本,其中包含所有必需的内容。理论上,这些应该在用户登录系统后运行。
不幸的是,当用户使用工作站时,这些都无法使用。当前的解决方法是手动source
进行。
让我困惑的是,这些脚本是在用户通过 ssh 远程登录时运行的。 :|
我在这里缺少什么?
答案1
/etc/profile
中的文件/etc/profile.d
由登录 shell 读取。这对于设置环境变量之类的事情来说很好,这些变量是由子进程继承的:这样它们就可以在会话中的所有程序中设置。这对于函数定义等 shell 设置没有好处,因为它们仅在该 shell 实例中可用。对于 shell 设置,您需要使用 shell 配置文件而不是会话配置文件。对于 bash,即~/.bashrc
, 和 (在启用它的系统上)/etc/bash.bashrc
。
有关更多信息,请参阅是否有一个所有 shell 都能读取的“.bashrc”等效文件?和 登录 Shell 和非登录 Shell 之间的区别?