我无法弄清楚这是怎么回事。当我在终端中运行它并输入密码时,什么也没有发生,但是,如果我在终端中单独运行每个命令,它将起作用。谢谢!
#!/bin/bash
sudo su;
mkdir /opt/D3GO/;
cp `pwd`/D3GO /opt/D3GO/;
cp `pwd`/D3GO.png /opt/D3GO/;
cp `pwd`/D3GO.desktop /usr/share/applications/;
chmod +x /opt/D3GO/D3GO
最佳答案
命令sudo su
启动一个交互式根shell,但不会将当前shell转换为根shell。
做您想要的事情的成语与此类似(感谢@CharlesDuffy的额外注意):
#check for root
UID=$(id -u)
if [ x$UID != x0 ]
then
#Beware of how you compose the command
printf -v cmd_str '%q ' "$0" "$@"
exec sudo su -c "$cmd_str"
fi
#I am root
mkdir /opt/D3GO/
#and the rest of your commands
这个想法是检查当前用户是否是root用户,如果不是,请使用
su
重新运行同一命令。关于linux - 为什么不能在Shell脚本中使用 'sudo su'?如何使Shell脚本自动使用sudo运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24640340/