web-dev-qa-db-ja.com

スクリプトの実行後にgnome-terminalを閉じないようにしますか?

いくつかのgnome-terminalを開き、sshを介して教室のコンピューターに接続し、スクリプトを実行するbashスクリプトを作成しました。

スクリプトの終了後にgnome-terminalが閉じることを回避するにはどうすればよいですか?ターミナルでさらにコマンドを入力できるようにしたいことに注意してください。

これが私のコードの例です:

gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
59
Marten Bauer

私は理解しているように、gnome-terminalを開いて、いくつかのコマンドを実行してから、プロンプトにドロップして、さらにコマンドを入力できるようにします。 Gnome-terminalはこのユースケース向けには設計されていませんが、回避策があります。

Gnome-terminalでbashを実行し、bashにコマンドを実行してからbashを実行するように指示します

$ 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"

Gnome-terminalにコマンドを実行してからbashにドロップするスクリプトを実行させます

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

85
lesmana

最後に、これは私のために機能します:

gnome-terminal --working-directory=WORK_DIR -x bash -c "COMMAND; bash"
13
  • スタックオーバーフローの答え:ターミナル内で実行されるコマンドが終了すると、ターミナルが閉じるため、すぐに終了しないコマンドを記述する必要があります。たとえば、押すまでターミナルウィンドウを開いたままにする Enter その中に:

    gnome-terminal -e "ssh Host 'cd /tmp && ls'; read line"
    
  • スーパーユーザー 回答:「タイトルとコマンド/コマンド終了時」の設定が「ターミナルを開いたままにする」に設定されているプロファイルを作成します。 --window-with-profileまたは--tab-with-profileオプションを使用してgnome-terminalを呼び出し、端末名を指定します。

11
Gilles

-icの代わりに-iを使用して実行し、ターミナルGUIを閉じるときにbashプロシージャを閉じます。

gnome-terminal -e "bash -ic \"echo foo; echo bar; exec bash\""
5
Zini

理想的な解決策は、エコー「任意のキーを押す」でユーザー入力を要求することです。

しかし、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
0
Leo