我编写了一些包含命令的脚本,例如:
gsettings ...
nohup nm-applet &
在没有 sudo 的情况下运行脚本(作为普通用户)时,这两个命令都会显示反馈。
当我使用 sudo 启动脚本时,脚本成功运行,但这些命令没有显示任何反馈。
whoami
即使已经显示普通用户,使用此类命令通过 sudo 运行脚本也不起作用。例子:
#!/bin/bash
exitfn() {
#try1
nohup nm-applet &
#try2
sudo -i -u normaluser bash <<EOF
whoami
nohup nm-applet &
EOF
#try3
su - normaluser -c "whoami && nohup nm-applet &"
}
trap "exitfn" INT
sudo killall nm-applet
sleep 3600
trap SIGINT
最后我选择将脚本部分分为普通用户部分和需要 sudo 的部分,但我仍然想知道为什么会出现这种情况。有没有办法让这两个命令在使用 sudo 调用的脚本中运行?
更新
设定:
事实证明我需要添加,gsettings --schemadir
因为我安装的扩展只在主目录中;不在根部。
sudo -E
按照@meuh的建议添加
nm-小程序:
使用sudo
,它确实运行了,但没有显示在桌面notifbar上。没有它sudo
,它就跑了和显示在桌面通知栏上。