
のようにターミナル (urxvt などの任意のターミナル) を起動するとurxvt -e sleep 5
、新しいターミナルが起動しますが、プログラムsleep
が終了したため 5 秒後にターミナルが閉じます。コマンド ラインでプログラムを使用してターミナルを起動し、そのプロセスが終了した後もターミナルを存続させるにはどうすればよいですか。
実際には、 を実行したいのですがurxvt -e tmux new-session top
、 は を実行中の tmux セッションで urxvt を開きますtop
。 しかし、 を押すと が終了しq
、 tmux と urxvt も終了します。 を終了するときに、 が tmux 内のシェルに移動するtop
ようにしたいと思います。top
答え1
ターミナル(tmux)は、実行するように指示したコマンドを実行すると閉じます。実行してtop
から対話型シェルを実行したい場合は、そのように指示する必要があります。コマンドを組み合わせるのはシェルの仕事なので、中間シェル(対話型ではない)を実行して、次のように指示します。それ2 つのコマンドを連続して実行します。
urxvt -e tmux new-session sh -c 'top; "$SHELL"'
答え2
一つの可能性:
gnome-terminal -e sh -c "sleep 5; bash"
ポイントは、bash
最初のコマンドが終了した後にシェル (この場合は) を実行することです。残念ながら、文全体が 1 つのコマンドとして解釈されるgnome-terminal -e 'sleep 5; bash'
ため、単純にはできません。sleep 5; bash