プログラムで新しい端末を開き、対話型セッションを開始するためにさまざまな環境変数を設定するカスタムスクリプトを自動的に実行しようとしています。結果ターミナルを編集できない、つまりカーソルがないことを除いて、すべてうまくいきます。私の現在の試みは次のとおりです
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
インタラクティブシェルセッションで一般的に発生するようにまだsourceを希望する場合は、run_oenv.sh
コードでこれを行うことができます。
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
または段落構文はありません。
if [ -f "$HOME/.bashrc" ]; then
source "$HOME/.bashrc"
fi
(おそらく、ファイルの上部でrun_oenv.sh
ファイルがその中にあるすべての変数や設定をオーバーライドできます~/.bashrc
)