я хотел бы запустить экран GNU, некоторую команду оболочки в нем, затем открытое новое экранное окно (окна) с другой командой (командами) - все что автоматически, из сценария. действительно ли это возможно?
экранные окна не должны закрыться после выполнения команд, я просто хочу иметь экранную сохраненную сессию (и отсоединился),
Можно поместить команды в файл, например, myscreenrc
, как это:
screen command1
screen command2
screen command3
и затем выполнитесь screen
с -c
опция, сопровождаемая под названием тот файл, например,
screen -c myscreenrc
ОБНОВЛЕНИЕ
в reponse к обновленному вопросу. Команды, которые я использовал для тестирования, были screen vim foo
и screen vim bar
, таким образом, я не видел закрывающей экран проблемы. Следующее решает закрывающую экран проблему, но это кажется чем-то вроде клуджа.
screen bash -c 'ls foo; exec bash -i'
screen bash -c 'ls bar; exec bash -i'
ls
была просто удобная команда для тестирования этой проблемы.
ОБНОВЛЕНИЕ № 2
Другой подход должен был бы запустить команду из емкостно-резистивного файла оболочки, а не из емкостно-резистивного файла экрана. Это требует другого файла для каждой команды, все же. Например, для выполнения top
в a screen
окно, таким образом, что выход top
возвратит Вас a bash
подсказка в том же самом окне, создайте файл, назовите его runtop
, это содержит следующее:
. ~/.bashrc
top
Затем поместите эту строку в файл, который мы называем screenrc
:
screen bash --rcfile ~/runtop -i
и запустите screen
как
screen -c screenrc