我的 Ubuntu 22.04 系统上有两个用户,分别名为 Alice 和 Sally。Alice 已在 .profile 文件中配置了她的环境变量,这些变量对她来说运行正常。但是,当 Alice 使用命令 sudo -s -u sally 切换到用户 Sally 时,Alice 的 .profile 中的环境设置不会反映在 Sally 中。
alice@dev7 192 0 % echo $appuser
alice
alice@dev7 193 0 % env | grep appuser
appuser=alice
alice@dev7 194 0 % sudo -s -u sally
sally@dev7 196 0 % echo $appuser
sally@dev7 197 0 %
我已验证 .profile 文件存在于 Sally 的主目录中并具有必要的配置。我想知道为什么当 Alice 使用 sudo -s -u sally 切换到她的用户时,环境变量没有应用于 Sally。是否需要任何其他步骤或配置来确保以这种方式切换用户时环境设置得以延续?
答案1
~/.profile
源自用户登录...因此,sudo -u user
您需要使用命令-i, --login
“将目标用户的密码数据库条目指定的 shell 作为登录 shell 运行”,如下所示:
sudo -i -u sally
注意:您可能不能同时指定-i
和-s
选项。
但是,如果您想保留当前用户的 shell 选择,那么您可以sudo su ...
像这样使用:
sudo su - sally --shell "$SHELL"
或者指定您选择的 shell,例如/bin/bash
像这样:
sudo su - sally --shell /bin/bash
不管目标用户的密码数据库条目指定的 shell 是什么。