Command-Line
如何防止終端在啟動程序結束時關閉?
如果我啟動一個終端(任何終端,例如 urxvt)
urxvt -e sleep 5
,則啟動一個新終端,但 5 秒後終端關閉,因為sleep
程序已經結束。如何在命令行上使用程序啟動終端,但在該過程結束後終端保持活動狀態?在實踐中,我真正想做的是
urxvt -e tmux new-session top
打開 urxvt 並帶有一個正在執行的 tmux 會話top
。但是當我按q
,top
結束時,這也會導致 tmux 和 urxvt 也結束。我想在我退出時top
被帶到 tmux 中的外殼。
終端(tmux)在執行您告訴它執行的命令時關閉。如果要執行
top
然後是互動式 shell,則需要告訴它這樣做。組合命令是 shell 的工作,所以執行一個中間 shell(它不是互動式的)並告訴它連續執行這兩個命令。urxvt -e tmux new-session sh -c 'top; "$SHELL"'
一種可能:
gnome-terminal -e sh -c "sleep 5; bash"
關鍵是在初始命令完成後執行 shell(
bash
在這種情況下)。不幸的是,簡單gnome-terminal -e 'sleep 5; bash'
是不可能的,因為整個句子sleep 5; bash
被解釋為一個命令。