Что произошло после sudo -s

Я новичок в оболочке.

Я пишу очень простой скрипт:

#!/bin/bash example() { echo "Code that don't need sudo." sudo -s echo "Code that need sudo" } example 

После запуска этого сценария я ожидаю:

  1. prompt Code that don't need sudo.

  2. shell спросить меня пароль

  3. если пароль в порядке, введите Code that need sudo.

Но после ввода хорошего пароля введите Code that need sudo. не появляется почему и как его исправить?

2 Solutions collect form web for “Что произошло после sudo -s”

Это потому, что sudo -s запускает корневую оболочку, и именно там вы оказываетесь после ввода пароля. Если вы выйдете из оболочки, вы увидите Code that need sudo :

 $ foo.sh Code that don't need sudo. [sudo] password for terdon: [root@tpad terdon]# exit Code that need sudo 

В общем, во всех сценариях, когда вы говорите ему, чтобы запустить команду, скрипт будет продолжать выполнение только после завершения команды. Итак, когда ваш скрипт запустил sudo -s , он ждал, пока это закончится, прежде чем продолжить. Вот почему текст был напечатан после того, как я запустил exit (или нажал Ctrl + D ).

-s без команды запускает интерактивную оболочку, поэтому вы больше не будете в той же оболочке, что и скрипт.

Подробнее см. man sudo .

Это должно работать, хотя:

 #!/bin/bash example() { echo "Code that don't need sudo." sudo -s echo "Code that need sudo" } example 
  • Есть ли простой способ создать оболочку sudo?
  • Безопасно ли отключать пароль для пользователя, если он использует только SSH-ключ?
  • Sudo больше недоступен, и пользователи не могут устанавливать или изменять большинство файлов
  • mac terminal - как сделать каталог требует SUDO-доступа, чтобы удалить его?
  • Почему sudo не перенаправляет stdout в файл / etc / file, но sudo 'nano' или 'cp' могут?
  • Как обычный пользователь может запускать задачу root cron немедленно, без задержки?
  • Различия между sudo и su в наследующей среде
  • Получить команды, которые пользователь может запустить из / etc / sudoers?
  • Разветвление безопасности использования этой строки в visudo: yourUSERname ALL = (otherUSERaccount) NOPASSWD: ALL
  • Получение sudo для работы с псевдонимом
  • Почему эта команда ssh не работает? (cat ./file | ssh <user @ host> "cat | sudo -t -t 'cat> / root / location / file'")
  • Есть ли эквивалент sudoedit для vimdiff?
  • Linux и Unix - лучшая ОС в мире.