я хочу написать скрипт внутри скрипта, я сделаю много команд, которые требуют root, как
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install eclipse
, но я хочу написать пароль только один раз
, я пытался напишите сверху
sudo su
, чтобы запустить от имени пользователя root, но он остановит скрипт, так что я могу написать пароль
Очевидное решение: запустить скрипт от имени пользователя root
sudo /your/script
Тогда все команды в скрипте будут выполняться от имени пользователя root.
Если некоторым командам не нужен root, просто используйте sudo
, чтобы вернуться к обычному пользователю
Если у вас есть команды, которые не требуют sudo
, вы можете проверить мой ответ на на этот вопрос .
Для краткости, вот быстрый ответ:
#!/bin/bash
PW=$1
echo $PW | apt-get update
echo $PW | apt-get upgrade
echo $PW | apt-get install eclipse
Бегите с bash file_name.bash sudo_pw
Причиной прохождения этого пути является то, что люди не обязательно могут сказать, что параметр, который вы передаете, означает, что, даже если кто-то каким-то образом контролирует (даже смотрит через плечо), он все равно безопасен.
Основная причина, по которой я это делаю, заключается в том, что большинство команд, которые я запускаю с помощью sudo, создают объекты, которыми нужно манипулировать позже, и использование sudo command
обычно делает их недоступными, даже если я sudo next_command
. Упрощенным примером будет создание файла Excel и желание манипулировать им с помощью другого процесса. Даже работая с sudo
, большую часть времени я не могу получить к нему доступ снова, не перезаписав его, который затем воссоздает его как недоступный объект.
Примечание: это также работает как сценарий оболочки, так как в синтаксисе нет ничего специфичного для BASH, так что вы можете использовать вместо него #!/bin/sh
и ./file_name.sh sudo_pw
, если это ваше предпочтение.