Действительно ли возможно выполнить команду в оболочке входа в систему с помощью sudo или su?

Я пытаюсь выполнить неинтерактивную команду в оболочке входа в систему (использование su - или sudo -i) но не мог заставить его работать до сих пор.

В ~/.bashrc Я получил сценарий, который устанавливает все переменные мои потребности приложения. Когда я делаю интерактивный вход в систему su - username Я вижу все свои переменные там и если я запускаю свое приложение, оно хорошо работает. Однако, когда я пытаюсь выполнить свое приложение при помощи su - username -c 'command' необходимые переменные не устанавливаются. Другими словами, это кажется su - является несовместимым с -c опция. То же происходит с sudo -i -u user command.

Я искал тонны вопросов, но не мог найти ответ на это определенное поведение.

Согласно страницам справочника удара:

When bash is invoked as an interactive login shell, or as a non-interactive
shell with the `--login` option, it first reads and executes commands from the
file `/etc/profile`, if that file exists. After reading that file, it looks for
`~/.bash_profile`, `~/.bash_login`, and `~/.profile`, in that order, and reads and
executes commands from the first one that exists and is readable. The
`--noprofile` option may be used when the shell is started to inhibit this
behavior.

Вышеупомянутое поведение не работает как ~/.profile выполняется ~/.bashrc и это в свою очередь получает сценарий, который устанавливает все переменные.

Как я могу выполнить неинтерактивную оболочку входа в систему?

Спасибо

0
задан 28 February 2018 в 03:04

1 ответ

Можно получить переменный файл в сценарии. В Вашем сценарии включайте следующую строку прежде, чем сослаться на любую из переменных:

source full_path_to_variable_file

Это считает Ваши переменные в сессию сценария. Необходимо использовать весь литеральный путь (никакие псевдонимы), начиная с корневого каталога' / ', так например, если .bash_aliases корневого каталога определяет переменные:

source /home/felima/.bash_aliases

На командной строке '.' имеет тот же эффект

. ~/.bash_aliases

Но в сценариях с помощью 'источника' более ясно.

0
ответ дан 30 October 2019 в 09:02

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

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