私は端末エミュレータにいます。指定されたコマンドを実行するために別の端末を開きたいです。
gnome-terminal -e "zsh -c 'pwd; zsh;'"
他の端末では引き続き正常に実行されますpwd
。終了zsh
後、pwd
zsh が開始され、2 番目の端末インスタンスで別のコマンドを実行できます。
ただし、別のアプリケーションを実行すると、pwd
長時間実行されるプログラムが正しく終了しません。
たとえば、CtrlCnode.jsサーバーをシャットダウンするために以下のコマンドを入力すると、端末も閉じます。オプションを介してSIGINT
最初のオプションに渡されるようです。zsh
-c
gnome-terminal -e "zsh -c 'node server.js; zsh;'"
この問題をどのように解決できますか?
答え1
私はこれをbashで試しました
それでもできない場合は、事前に謝罪してください。
私はuserInput.shというbashスクリプトを書いた。スクリプトはユーザー入力を待って終了します。
`
## trap ctrl-c and call ctrl_c()
trap ctrl_c INT
function ctrl_c() {
echo "** Trapped CTRL-C"
exit
}
read -p "Press any key to continue... " -n1 -s
今実行してclt + cを押すと
gnome-terminal -e "bash -c './userInput.sh; bash;'"
userInput.sh は終了しますが、 bash プロンプトはそのまま残ります。
今、あなたの場合は、ユーザー入力を待たずに次のようにnode server.jsを実行していると思います。
## trap ctrl-c and call ctrl_c()
trap ctrl_c INT
function ctrl_c() {
echo "** Trapped CTRL-C"
exit
}
node server.js
スクリプト名を「runNodeJs.sh」と仮定すると、コマンドは次のようになります。
gnome-terminal -e "bash -c './runNodeJs.sh; bash;'"