いくつかのgnome-terminalを開き、sshを介して教室のコンピューターに接続し、スクリプトを実行するbashスクリプトを作成しました。
スクリプトの終了後にgnome-terminalが閉じることを回避するにはどうすればよいですか?ターミナルでさらにコマンドを入力できるようにしたいことに注意してください。
これが私のコードの例です:
gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
私は理解しているように、gnome-terminalを開いて、いくつかのコマンドを実行してから、プロンプトにドロップして、さらにコマンドを入力できるようにします。 Gnome-terminalはこのユースケース向けには設計されていませんが、回避策があります。
$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
exec bash
は最後に必要です。なぜならbash -c
は、コマンドが完了すると終了します。 exec
は、実行中のプロセスを新しいプロセスに置き換えます。それ以外の場合は、2つのbashプロセスが実行されます。
rcfile
でgnome-terminalにbashを実行させますsomercfile
を準備します。
source ~/.bashrc
echo foo
echo bar
次に実行します:
$ gnome-terminal -e "bash --rcfile somercfile"
scripttobash
を準備します。
#!/bin/sh
echo foo
echo bar
exec bash
このファイルを実行可能ファイルとして設定します。
次に実行します:
$ gnome-terminal -e "./scripttobash"
または、genericscripttobash
を作成できます。
#!/bin/sh
for command in "$@"; do
$command
done
exec bash
次に実行します:
$ gnome-terminal -e "./genericscripttobash \"echo foo\" \"echo bar\""
すべてのメソッドには癖があります。選択する必要がありますが、賢明に選択してください。私はその冗長性と率直さの最初の解決策が好きです。
とはいえ、これはあなたに役立つかもしれません: http://www.linux.com/archive/feature/15134
最後に、これは私のために機能します:
gnome-terminal --working-directory=WORK_DIR -x bash -c "COMMAND; bash"
スタックオーバーフローの答え:ターミナル内で実行されるコマンドが終了すると、ターミナルが閉じるため、すぐに終了しないコマンドを記述する必要があります。たとえば、押すまでターミナルウィンドウを開いたままにする Enter その中に:
gnome-terminal -e "ssh Host 'cd /tmp && ls'; read line"
スーパーユーザー 回答:「タイトルとコマンド/コマンド終了時」の設定が「ターミナルを開いたままにする」に設定されているプロファイルを作成します。 --window-with-profile
または--tab-with-profile
オプションを使用してgnome-terminalを呼び出し、端末名を指定します。
-ic
の代わりに-i
を使用して実行し、ターミナルGUIを閉じるときにbashプロシージャを閉じます。
gnome-terminal -e "bash -ic \"echo foo; echo bar; exec bash\""
理想的な解決策は、エコー「任意のキーを押す」でユーザー入力を要求することです。
しかし、NautisまたはNemoをダブルクリックして、ターミナルで実行を選択すると、動作しないようです。
buntの場合、標準機能のみを備えた高速起動および実行用に設計されたシェルが使用されます。このため、Shebangはbash機能の適切な使用を有効にするで始まる最初の行です。通常、これは#!/ bin/bashまたは同様のものになります。 Ubuntuでは、これは#!/ usr/bin/env bashである必要があることを学びました。
インタプリタがbashコマンドで構文エラーを検出する前に画面を保持するための多くの回避策が存在します。
私のために働いたUbuntuのソリューション:
#!/usr/bin/env bash
your code
echo Press a key...
read -n1