即使执行 sudo su,如何为所有用户设置环境变量?

即使执行 sudo su,如何为所有用户设置环境变量?

x.sh我在目录中创建了一个名为的文件,/etc/profile.d/因此所有用户都应该可以访问它。我期望当我使用命令在终端(已登录用户)中更改当前用户时sudo su other_user,我在文件中设置的那些变量x.sh应该可以访问,但事实并非如此。如何设置变量以使其按我的意愿可访问?

答案1

/etc/profile(因此/etc/profile.d)被读取用于登录 shell。sudo su other_user不运行登录 shell。这是一种不好的做法,它会让环境受到原始用户变量的污染。您应该改为执行以下命令之一:

sudo -iu other_user
sudo su - other_user

这两者都会加载,/etc/profile因为它们启动了登录 shell,并且都以相对干净的环境启动。

不过,理想情况下,如果可能的话,应该设置变量/etc/environment。该文件应该可由 读取su,因此无论是否启动登录 shell,其中的变量都可用。但是,该文件不支持 shell 语法,因此如果您需要复杂的 shell 代码来设置变量,则无法使用它。

答案2

下列的如何永久设置环境变量 · U&L bash将加载

/etc/profile

因此这是添加对所有用户有效的变量的正确位置。

相关内容