![起動したプログラムが終了したときに端末が閉じないようにする方法は? [コピー]](https://linux33.com/image/95029/%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%8C%E7%B5%82%E4%BA%86%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E7%AB%AF%E6%9C%AB%E3%81%8C%E9%96%89%E3%81%98%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
このような端末(urxvtなどの端末)を起動すると、新しい端末が起動しますが、5秒後にプログラムが終了したため、端末はurxvt -e sleep 5
閉じます。sleep
コマンドラインのプログラムで端末を起動し、そのプロセスが終了しても端末をアクティブに保つにはどうすればよいですか?
実際に私が本当にしたいのは、urxvt -e tmux new-session top
実行中のtmuxセッションを使用してurxvtを開くことですtop
。しかし、q
endを押すとtop
tmuxとurxvtも終了します。終了時にtop
tmuxのシェルに移動したいと思います。
答え1
実行を指示したコマンドの実行中に、端末(tmux)が閉じます。対話型シェルを最初に実行するには、そうするように指示するtop
必要があります。コマンドを結合するのはシェルの作業なので、中間シェル(対話型ではない)を実行してそれこれら2つのコマンドを連続して実行します。
urxvt -e tmux new-session sh -c 'top; "$SHELL"'
答え2
1つの可能性:
gnome-terminal -e sh -c "sleep 5; bash"
要点は、bash
初期コマンドが完了した後(この場合)シェルを実行することです。残念ながら、gnome-terminal -e 'sleep 5; bash'
文全体がステートメントsleep 5; bash
として解釈されるので、単純さは不可能です。