как запустить функцию как root в сценарии оболочки

Я сделал это и решил:

sudo killall -9 jackdbus
3
задан 11 May 2011 в 12:48

36 ответов

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 10 August 2018 в 09:47

IMHO ... Простейший способ запускать весь скрипт как root без необходимости помнить, что его нужно запускать как root. Кажется, он должен работать для того, что вы пытаетесь выполнить

  #! / bin / bash dScript = $ 0, если [[$ {UID} -gt 0]];  затем sudo $ {dScript} exit fi ### остальная часть вашего скрипта  
0
ответ дан 10 August 2018 в 09:47

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он выполняется в отдельном процессе. Если вы настаиваете на выполнении функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $ 1 , который запускает функцию напрямую.

1
ответ дан 10 August 2018 в 09:47

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 13 August 2018 в 16:01

IMHO ... Простейший способ запускать весь скрипт как root без необходимости помнить, что его нужно запускать как root. Кажется, он должен работать для того, что вы пытаетесь выполнить

  #! / bin / bash dScript = $ 0, если [[$ {UID} -gt 0]];  затем sudo $ {dScript} exit fi ### остальная часть вашего скрипта  
0
ответ дан 13 August 2018 в 16:01

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он выполняется в отдельном процессе. Если вы настаиваете на выполнении функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $ 1 , который запускает функцию напрямую.

1
ответ дан 13 August 2018 в 16:01
  • 1
    Я пытаюсь поместить свою функцию в другой скрипт, она работает, когда я получаю доступ к ней через терминал. но когда вы делаете его как панель запуска (приложение в терминале) в панели, она не работает ... см. мое редактирование .. – Egy Mohammad Erdin 11 May 2011 в 12:16
  • 2
    Попробуйте использовать полный путь: sudo FULL_PATH_TO / main2.sh. При вызове из панели запуска первоначальный рабочий каталог не является каталогом сценариев, использование ./main2.sh не ожидается. – João Pinto 11 May 2011 в 16:42

Другие вопросы по тегам:

Похожие вопросы: