web-dev-qa-db-ja.com

開いているすべての端末で新しい.bashrcを入手する

一度にたくさんのターミナルを開いていることに気づきました。 。bashrcを更新するときは、各端末に移動して実行する必要があります

. .bashrc

新しい。bashrcで端末を調達します。

これは一種の苦痛であり、時間もかかります。それぞれに移動したり、ログアウトして最初からやり直したりせずに、開いているすべての端末を新しい。bashrcファイルで調達する方法があるかどうか疑問に思いました。

6
Jeff

terdonのアプローチ は適切な状況でうまく機能しますが、たとえば。bashrc[〜#〜] path [〜#〜]変数、それはかなり早くエラーを引き起こします。

単にファイルをリソースする代わりに、最初にその変更時刻を確認して、最後にソースされたバージョンのmtimeと比較することができます。

これを行うには、これを〜/ .bashrcに追加します。

  • Linux

    bashrc_sourced=$(stat -c %Y ~/.bashrc)
    
    Prompt_COMMAND='
        test $(stat -c %Y ~/.bashrc) -ne $bashrc_sourced && source ~/.bashrc
    '
    
  • OSXおよびBSD

    bashrc_sourced=$(stat -f %m ~/.bashrc)
    
    Prompt_COMMAND='
        test $(stat -f %m ~/.bashrc) -ne $bashrc_sourced && source ~/.bashrc
    '
    

次に、最後にもう一度手動でリソースを割り当てます。

6
Dennis

一般に、オペレーティングシステムを含めることを忘れないでください。正解は、多くの場合、システムによって異なります。 bashは、ほとんどのLinux、OS X、および多くのUNIXでデフォルトで使用されることに注意してください。

とにかく、あなたの場合、OSは無関係であるはずなので、あなたがする必要があるのは Prompt_COMMAND 変数を設定することです:

Bashは、Prompt_COMMANDと呼ばれる環境変数を提供します。この変数の内容は、Bashがプロンプトを表示する直前に通常のBashコマンドとして実行されます。

したがって、実行するコマンドは~/.bashrcをソーシングしているため、この行を~/.bashrcに追加します(.sourceの単なるエイリアスです)。

Prompt_COMMAND='source ~/.bashrc'

これで、Bashがプロンプトを表示するたびに、最初に~/.bashrcを再読み取りします。開いている端末を取得するには(afterの後に開いている限り、Prompt_COMMANDを設定します)、任意のコマンドを実行するか、単に Enter

警告:~/.bashrcの複雑さによっては、ファイル内のコマンドが繰り返し実行されるため、これにより顕著な遅延が追加される可能性があります。

2
terdon

KISS

これらのいずれかまたは両方を/ etc/profileおよび〜/ .bashrcのいずれかまたは両方に配置します

alias sProf='source /etc/profile'
alias sBrc='source ~/.bashrc'

別のアプローチ:

コマンドと改行を含めるために矢印の間のすべてを含むターミナルラインをコピーし、それをすべてのターミナルに中クリックします。

  <---------------------------->
$ source ~/.bashrc             | terminal border