2017-11-17 7 views
0

.bashrcファイルの最後にecho thisIsMyBashを追加しました。今では、ctrl+alt+tで新しい端末を作成すると、thisIsMyBashが最初に書かれています。これは予想通りです。bashと.bashrcの奇妙な動作

私の端末に/bin/bashと入力すると、thisIsMyBashも端末に表示されます。

私の端末に/bin/bash -c "source ~/.bashrc"と書くと、何も書き込まれません。どうして?

また、実際には/bin/bash -c "source ~/.bashrc" && exec /bin/bash -liと書いてありますが、このマイバッシュも表示されます。どうして?

+2

あなたの '.bashrc'ファイルには、対話シェルでなければ早期に終了するものがありますか? – chepner

+0

実際にプログラミングの質問ではありませんが、私はこの動作を再現できません。おそらく、ある条件の下でエコーの前に実行を停止させるbashrcの以前のロジックがありますか? bashrcにエコーだけのクリーンなシェルでは、 'bash -c source'で実行するときを含め、毎回それを取得します。 –

+0

@ MarkReed動作は私のために再現するのが簡単でした。最後のエコーだけで同じ結果が得られました。 –

答えて

1

bashの "-i"オプションを使用すると、必要に応じて動作します。このオプションは、シェルをインタラクティブにします。試してみてください:

/bin/bash -i -c "source ~/.bashrc" 

見てくださいhere

+0

これは、bashrcテストで対話性をテストし、見つかったときに別の動作をするコードがあることを示しています。その文脈は問題にはなかった。 –