Я создал .screenrc
файл для автоматической настройки различных окон при запуске screen
, В одном окне я бы хотел: переключиться на пользователя root, затем перейти в определенный каталог В настоящее время я делаю это вручную после создания нового окна экрана следующим образом:
sudo bash
cd /etc/[dir]/
Как я могу повторить это в .screenrc
? Я читал в другом месте, что для запуска нескольких команд в одной строке вы можете использовать &&
, но я не могу заставить это работать sudo bash
(предположительно потому, что он создает новый экземпляр bash и поэтому остальные команды либо игнорируются, либо запускаются в новом экземпляре, а затем завершаются).
/root/.profile
твоя командаcd /etc/[dir]/
и делать только на экранеsudo bash
, Убедитесь, что дорожка ваш удар при запускеsu -
,sudo -i
, так далее.screen -t sudobash stuff "cd '/etc/[dir]';^M"
Ответы:
Да, то же самое практически со всеми механизмами переключения пользователей (
su
,sudo -s
и т. д.) но ваш вариант делает очень очевидным, что новыйbash
процесс запущен.Нет, родительская оболочка просто ждет
sudo
- и, следовательно, для нового экземпляра bash - выйти. (Как это было бы с любой другой командой.)sudo bash
и ждет его выхода.bash
и ждет его выхода.Однако вы можете указать любой оболочке выполнять команды неинтерактивно, используя ее
-c
опция, которая принимает одну командную строку: например,bash -c "cd /etc && ls"
, (Это используется за кулисамиssh
или жеsu -c
.)Чтобы получить интерактивную оболочку, просто убедитесь, что последняя команда в этой подкоманде запускает интерактивную оболочку. (Это довольно много примеров bash, но это не проблема.)
источник