Я хочу написать сценарий оболочки для автоматизации ряда команд. Проблема в том, что некоторые команды ДОЛЖНЫ выполняться от имени суперпользователя, а некоторые НЕ ДОЛЖНЫ выполняться от имени суперпользователя. То, что я сделал до сих пор, выглядит примерно так:
#!/bin/bash
command1
sudo command2
command3
sudo command4
Проблема в том, что это означает, что кто-то должен дождаться завершения команды 1, прежде чем ему будет предложено ввести пароль, а затем, если команда 3 займет достаточно много времени, ему придется дождаться завершения команды 3. Было бы неплохо, если бы человек мог встать и уйти, а потом вернуться через час и покончить с этим. Например, следующий сценарий имеет эту проблему:
#!/bin/bash
sleep 310
sudo echo "Hi, I'm root"
sleep 310
sudo echo "I'm still root?"
Как я могу сделать так, чтобы пользователь мог просто ввести свой пароль один раз, в самом начале, а затем уйти?
Обновление:
Спасибо за ответы. Я работаю в Mac OS X Lion, запускаю сценарий Стивена П. и получаю другие результаты: (я также добавил $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