
Если я запускаю терминал (любой терминал, например urxvt) как urxvt -e sleep 5
, то запускается новый терминал, но через 5 секунд терминал закрывается, потому что sleep
программа завершилась. Как мне запустить терминал с программой в командной строке, но оставить терминал активным после завершения этого процесса?
На практике, что я хотел бы сделать, это urxvt -e tmux new-session top
, который открывает urxvt с запущенной сессией tmux top
. Но когда я нажимаю q
, top
завершается, что также приводит к завершению tmux и urxvt. Я хотел бы, top
чтобы при выходе я попадал в оболочку внутри tmux.
решение1
Терминал (tmux) закрывается, когда он выполняет команду, которую вы ему сказали выполнить. Если вы хотите выполнить top
и затем интерактивную оболочку, вам нужно сказать ему сделать это. Объединение команд — это работа оболочки, поэтому запустите промежуточную оболочку (которая не является интерактивной) и скажитеэтодля последовательного выполнения двух команд.
urxvt -e tmux new-session sh -c 'top; "$SHELL"'
решение2
Одна из возможностей:
gnome-terminal -e sh -c "sleep 5; bash"
Суть в том, чтобы запустить оболочку ( bash
в данном случае) после того, как ваша начальная команда завершится. К сожалению, простое gnome-terminal -e 'sleep 5; bash'
невозможно, поскольку все предложение sleep 5; bash
интерпретируется как одна команда.