web-dev-qa-db-ja.com

GNU .bash_profile / .bash_rcの変更を読み取る画面を取得するにはどうすればよいですか?

.bash_rcまたは.bash_profileに変更を加えた後、GNU screenを開始すると、それらの変更が認識されません。

source ~/.bash_profile

開いている現在の画面ウィンドウで機能しますが、開いているすべての画面ウィンドウでこれを行う必要があります。

Bash構成の最新の変更を読み取る画面を取得するにはどうすればよいですか?

40
Francis Lewis

それらはすべて異なるシェルなので、開いている各画面でそれを実行する必要があります。新しいシェルを開くたびに変更が必要な場合は、代わりに〜/ .bashrcに変更を入れることをお勧めします。

どうやら この構文 を使用して、すべてのウィンドウにコマンドを一度に送信できます:

C-a :
at "#" stuff "source ~/.bash_profile^M"
17
gpojd

画面で常にシェルをログインシェルとして扱い、新しいシェルを正常に起動した場合に読み込まれるのと同じファイルをソースする場合は、~/.screenrc(または~/.byobu/.screenrc)に以下を追加します。コメントで指摘された):

Shell -$Shell

この方法では、新しい画面を開始するたびにファイルをソースするように手動で指示する必要はありません。ただし、変更を加えて、それらの変更を現在の画面に反映させたい場合は、そうする必要があります。

このドキュメント(および他の多くの画面の詳細)は ここ で見つけることができます。基本的に、Shellは、新しいシェルを作成する必要があるときに次のコマンドを実行するように画面に指示するコマンドです。 $Shellは、使用するシェルへのパスを保持する通常の変数です。また、-の前にあるダッシュ$Shellは、ログインシェルとして実行する必要があることを示します(これは通常、~/.bash_profileなどをソースにすることを意味します)。

ただし、画面のデフォルトでは、画面を起動したシェルからほとんどの環境変数を継承することに注意してください。また、ログインサブシェルは一部の環境変数を予期しない方法で変更する可能性があります。 $ PATHの要素が基本的に入れ替えられる状況に遭遇しました。スーパーユーザーで これは特に優れた答え のおかげで問題を解決しました。

sourceコマンドが利用可能であることに気付くでしょう。これは、シェルコマンドではなく、screenコマンドのファイルをソースとすることに注意することが重要です。その他の関連する(画面)コマンドには、 eval および exec が含まれます。

59
Mike