您尚未登录。

#1 2025-03-21 19:14:01

Smilium
会员
注册时间: 2025-03-11
帖子: 10

[已解决]【求助】sudo 环境变量提问

目标: 不使用 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)

离线

#2 2025-03-21 19:22:53

GalaxySnail
会员
注册时间: 2023-09-10
帖子: 9

Re: [已解决]【求助】sudo 环境变量提问

sudo 默认就会设置 HOME 环境变量,你这里看上去 HOME 没有更新是因为这个变量是在 shell 中展开的,你当前的 shell 展开这个环境变量以后才调用 sudo 命令。要解决这个问题只需要:

sudo -u guest sh -c 'echo $HOME'

就行了。

离线

#3 2025-03-21 19:24:29

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 9,168
个人网站

Re: [已解决]【求助】sudo 环境变量提问

 sudo -u guest sh -c 'echo $HOME'

不然你的 $HOME 是先被你的 shell 展开,然后传递给 sudo 执行的。sudo 看到的调用参数是  sudo -u guest echo /home/你的用户名。

离线

页脚