「konsole -e」を使用すると、読み取り専用端末が生成されます。

「konsole -e」を使用すると、読み取り専用端末が生成されます。

プログラムで新しい端末を開き、対話型セッションを開始するためにさまざまな環境変数を設定するカスタムスクリプトを自動的に実行しようとしています。結果ターミナルを編集できない、つまりカーソルがないことを除いて、すべてうまくいきます。私の現在の試みは次のとおりです

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

関連情報