プログラムで新しいターミナルを開き、対話型セッションの準備としてさまざまな環境変数を設定するカスタム スクリプトを自動的に実行しようとしています。これはすべて正常に動作しますが、結果のターミナルは編集できません (つまり、カーソルがありません)。現在の試みは次のようになります。
konsole -hold -e /path/to/bash/script/run_oenv.sh
ここではrun_oenv.sh
次のようになります (簡単なテストの場合):
echo hello world
export FOO=bar
上記のコマンドを実行するとrun_oenv.sh
正常に実行され、期待どおりのデバッグ ステートメントが新しいターミナルにエコー表示されますが、新しいターミナルをインタラクティブにする方法がわかりません。何が足りないのでしょうか?
最終的には、bash スクリプトは環境変数を設定する以上のことを行う必要がありますが、これは最も単純なテスト ケースです。
これは Centos 7/KDE 上です。
答え1
-e
ターミナルエミュレータを使用してコマンドを実行すると、そのコマンドが実行されます。その代わりシェルが起動したはずです。つまり、スクリプトが実行され、それ以外は何も行われません。
bash
ファイルをソースとする対話型シェルを起動する場合は、コマンドライン オプションbash
を使用します。--rcfile
konsole -hold -e bash --rcfile /path/to/bash/script/run_oenv.sh
これにより、bash
ないファイルを読み取ります~/.bashrc
。~/.bashrc
対話型シェル セッションで通常行われるように、それでもソースを実行したい場合は、コードから実行しますrun_oenv.sh
。
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
または短絡構文なしで、
if [ -f "$HOME/.bashrc" ]; then
source "$HOME/.bashrc"
fi
(おそらくファイルの先頭に記述run_oenv.sh
して、ファイル内の変数や設定を上書きします~/.bashrc
)