页次: 1
目标: 不使用 su 命令,在主账户中使用另一个用户 guest 的身份运行程序,且只使用 guest 和全局的环境变量,不使用主账户的环境变量。
实际效果:
使用命令
sudo -u guest echo $HOME
显示的是主账户的 home 目录
使用命令
sudo -u guest HOME=/home/guest echo $HOME
显示的是主账户的 home 目录
使用命令
sudo -u guest env HOME=/home/guest echo $HOME
显示的是主账户的 home 目录
然而使用命令
sudo -u guest printenv
返回的 HOME 却是 /home/guest
最近编辑记录 Smilium (2025-03-22 13:04:09)
离线
sudo 默认就会设置 HOME 环境变量,你这里看上去 HOME 没有更新是因为这个变量是在 shell 中展开的,你当前的 shell 展开这个环境变量以后才调用 sudo 命令。要解决这个问题只需要:
sudo -u guest sh -c 'echo $HOME'
就行了。
离线
sudo -u guest sh -c 'echo $HOME'
不然你的 $HOME 是先被你的 shell 展开,然后传递给 sudo 执行的。sudo 看到的调用参数是 sudo -u guest echo /home/你的用户名。
离线
页次: 1