如何防止终端在启动的程序结束时关闭?

如何防止终端在启动的程序结束时关闭?

如果我像这样启动一个终端(任何终端,例如 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被解释为一个命令。

相关内容