如果我像这样启动一个终端(任何终端,例如 urxvt)urxvt -e sleep 5
,则会启动一个新终端,但 5 秒后终端将关闭,因为sleep
程序已结束。如何在命令行上使用程序启动终端,但在该进程结束后让终端保持活动状态?
在实践中,我真正想做的是urxvt -e tmux new-session top
,它使用正在运行的 tmux 会话打开 urxvt top
。但是当我按q
,top
结束时,也会导致 tmux 和 urxvt 结束。我希望当我退出时top
被带到 tmux 中的 shell。
答案1
终端 (tmux) 在执行您告诉它执行的命令时关闭。如果您想先执行top
交互式 shell,则需要告诉它执行该操作。组合命令是 shell 的工作,因此运行一个中间 shell(不是交互式的)并告诉它连续运行这两个命令。
urxvt -e tmux new-session sh -c 'top; "$SHELL"'
答案2
一种可能性:
gnome-terminal -e sh -c "sleep 5; bash"
重点是bash
在初始命令完成后运行 shell(在本例中)。不幸的是,简单gnome-terminal -e 'sleep 5; bash'
是不可能的,因为整个句子sleep 5; bash
被解释为一个命令。