Soh*_*ani 3 bash environment-variables su
我x.sh在目录中创建了一个文件,/etc/profile.d/以便所有用户都可以访问它。我期望当我使用 command 在终端(登录用户)中更改当前用户时sudo su other_user,我在x.sh文件中设置的那些变量应该可以访问,但它们不是。如何根据需要设置可访问的变量?
/etc/profile(因此/etc/profile.d)被读取用于登录 shell。sudo su other_user不运行登录shell。这是一种不好的做法,它会使环境受到来自原始用户的变量的污染。您应该改为执行以下任一命令:
sudo -iu other_user
sudo su - other_user
Run Code Online (Sandbox Code Playgroud)
这两个加载都是/etc/profile因为它们启动登录 shell,并且都从相对干净的环境开始。
理想情况下,/etc/environment如果可能,应该设置变量。该文件应由读取su,因此无论登录 shell 是否启动,变量都可用。但是,该文件不支持 shell 语法,因此如果您需要复杂的 shell 代码来设置变量,则无法使用它。
| 归档时间: |
|
| 查看次数: |
6912 次 |
| 最近记录: |