web-dev-qa-db-ja.com

終了せずにxterm -eを実行する

終了せずにxterm -e file.shを実行したい。

ファイルでは、コマンドをバックグラウンドに送信していますが、スクリプトが完了しても、コマンドはまだ完了していません。

私が現在やっていることは:

(cd /myfolder; /xterm -ls -geometry 115x65 -sb -sl 1000) 

そして、ウィンドウがポップアップした後

sh file.sh
exit

私がやりたいことは次のようなものです:

(cd /myfolder; /xterm -ls -geometry 115x65 -sb -sl 1000 -e sh file.sh)

終了せずに、バックグラウンドのコマンドが完了するまで待機します。

誰でもそれを行う方法を知っていますか?

16
jarhead

シェルスクリプトに組み込まれているwaitを使用します。すべてのバックグラウンドジョブが完了するまで待機します。

実例:

#!/bin/bash
# Script to show usage of wait
sleep 20 &
sleep 20 &
sleep 20 &
sleep 20 &
sleep 20 &
wait

出力

sgulati@maverick:~$ bash test.sh
[1]   Done                    sleep 20
[2]   Done                    sleep 20
[3]   Done                    sleep 20
[4]-  Done                    sleep 20
[5]+  Done                    sleep 20
sgulati@maverick:~$ 
6
Samveen

holdオプションを使用:

xterm -hold -e file.sh

-hold保留リソースをオンにします。つまり、シェルコマンドが完了しても、xtermはすぐにウィンドウを破棄しません。ウィンドウマネージャーを使用してウィンドウを破棄または強制終了するまで、またはHUPやKILLなどの信号を送信するメニューエントリを使用するまで待機します。

26
imwilsonxu

私は-holdを試行しましたが、xtermを非標準の手段(ウィンドウマネージャー、killコマンド)を介して閉じる必要がある無応答状態のままにしています。終了できるシェルを開いておきたい場合は、コマンドの最後にそのシェルを追加してみてください。

xterm -e "cd /etc; bash"

スーパーユーザー で答えを見つけました。

12
Gid

以前の回答に基づいて、bashの代わりに$ Shellを指定すると、ユーザーが好むシェルが使用されます。

xterm -e "cd /etc; $Shell"
3
Dan