我想编写一个 shell 脚本来自动执行一系列命令。问题是某些命令必须以超级用户身份运行,而某些命令不得以超级用户身份运行。到目前为止我所做的是这样的:
#!/bin/bash
command1
sudo command2
command3
sudo command4
问题是,这意味着在提示输入密码之前必须等到 command1 完成,然后,如果 command3 花费的时间足够长,他们将不得不等待 command3 完成。如果这个人可以站起来走开,然后一个小时后回来完成,那就太好了。例如,下面的脚本就有这个问题:
#!/bin/bash
sleep 310
sudo echo "Hi, I'm root"
sleep 310
sudo echo "I'm still root?"
我怎样才能做到这一点,以便用户可以在一开始就输入他们的密码一次,然后走开?
更新:
感谢您的回复。我在 Mac OS X Lion 上运行并运行了 Stephen P 的脚本并得到了不同的结果:(我还添加了 $HOME)
pair@abbey scratch$ ./test2.sh
uid is 501
user is pair
username is
home directory is /Users/pair
pair@abbey scratch$ sudo ./test2.sh
Password:
uid is 0
user is root
username is root
home directory is /Users/pair