ターミナルを閉じずにスクリプトを実行する方法は?


69

ファイルにスクリプトがあり、bla.sh実行可能です。私はときにクリックすることで、スクリプトが実行され、ウィンドウが閉じられています。窓を開いたままにしたいです。

cmd /k** commandWindowsのコマンドのようなもの。

PS 使用したくないpauseが、スクリプトの実行後にさらにコマンドを記述できるようにしたい。

回答:


81

$SHELLスクリプトの最後に追加します。

代替テキスト

小さな欠陥:シェルとしてgnome-terminal実行さbashれていないため、アプリケーションと見なし、ターミナルを閉じようとすると警告が表示されます。

There is still a process running in this terminal
Closing the terminal will kill it.

この警告を隠す良い方法は見つかりませんでした。必要に応じて、次を実行して完全に無効にすることができます。

gconftool --set /apps/gnome-terminal/global/confirm_window_close --type boolean false

xtermgnome-terminalの代わりに使用している場合、これは起こりません。気にする必要があります。


20
設定を変更せずに警告をなくすためexec $SHELLだけ$SHELLに使用することはできません。
アンドレアコルベッリーニ

1
しかし、このソリューションは余分なシェル/プロセスを作成します。これは回避できますか?
lucasvc

私はこれを行う方法を知りません、いいえ。問題は、最初のbashプロセスが終了すると標準IOのハンドルが失われることです。そのため、これらのハンドルを渡すデーモンを使用していくつかの巧妙な作業を行う必要があります。
ステファノパラッツォ

10

Gnomeターミナルの使用

gnome-terminalを使用して、コマンド文字列の最後に; bashを追加し、-cオプションを指定してスクリプトを呼び出します。例えば:

gnome-terminal -e "bash -c ~/script.sh;bash"

これは次のことを行います。

  1. gnome-terminalを開きます
  2. スクリプトscript.shを実行します
  3. スクリプトの終了後、bashプロンプトが表示されます。

ウィンドウを閉じるか、bashプロンプトでexitと入力して、gnome-terminalウィンドウを終了できます。または、要求に応じてさらにコマンドを入力できます。



7

スクリプトにアクセスできる場合は、最後に次のコードを追加することもできます。

read

そのコードは入力を待ってから閉じるため、Enterキーを押すまで端末は開いたままになります。


1
bash最後によく使用しreadますが、ctrl+corのenter代わりにctrl+shift+wor だけでウィンドウを閉じることができますalt+f4。これは、スクリプトをすばやく繰り返す場合に便利です。
hsandt

5

一時的なパイプでbash--init-fileオプションを使用します。

bash --init-file <(echo './<script_name>')

例:

bash --init-file <(echo './bla.sh')

2

コマンド文字列の最後に使用xtermして追加する;bashと機能します。例えば:

xterm -e "bash ~/script.sh;bash"

これは次のことを行います。

  1. xtermを開きます
  2. スクリプトを実行します script.sh
  3. スクリプトの終了後、bashプロンプトが表示されます。

xtermウィンドウを閉じるには、ウィンドウを閉じるかexit、bashプロンプトで入力します。または、要求に応じてさらにコマンドを入力できます。


1
xterm -e bash --rcfile bla.sh

これにより、新しいウィンドウでスクリプトが実行され、終了後にウィンドウを制御できます。

ただし、代わり~/.bashrcに実行したため、新しいウィンドウは通常どおり読み込まれませんbla.sh。これは、

. ~/.bashrc

の上部に bla.sh

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.