2011-08-04 10 views
27

.bash_rcまたは.bash_profileを変更した後、私がGNU画面を起動したときに、その変更を認識しません。 私はできGNU画面に.bash_profile/.bash_rcの変更を読み込ませるにはどうすればよいですか?

source ~/.bash_profile 

、それは私が開いている現在の画面のウィンドウのために動作しますが、私は開いているすべての画面のウィンドウのためにそれを行う必要があります。

bash設定の最新の変更を読み込むにはどうすればよいですか?

+0

受け入れられた回答を別の(正しい)ものに変更するのは、Mikeさんですか? – dotz

答えて

11

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

どうやら、あなたはthis syntaxを使用して、一度にすべてのウィンドウにコマンドを送信することができます。

C-a : 
at "#" stuff "source ~/.bash_profile^M" 
+0

開いているすべてのスクリーンウィンドウの.bash_profileをソースできましたが、私が開いている新しいスクリーンウィンドウでは機能しません。 新しいスクリーンセッションを開始するときに、新しい.bash_profileデータもすべてロードされません。 –

+4

私はなぜそれを置くのか分かりません。 .bash_profileは、初めてログインするときにのみ提供されます。.bashrcは、シェルを開くたびに実行されます。毎回それが必要な場合は、.bashrcではなく、.bash_profileに変更を加えることをお勧めします。 – gpojd

+0

これは完璧に機能しました!本当にありがとう! 私はまだログインしたときに.bash_profileに物を入れてしまったと思っていたでしょうが、そうではありませんでした。 –

41

あなたが画面をしたい場合は、必ずログインシェルとしてシェルを扱い、場合読み取ることと同じファイルをソースします(コメントで指摘したように、または多分~/.byobu/.screenrc)だけで、通常は新しいシェルを開始し、~/.screenrcに次の行を追加します

shell -$SHELL 

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

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

しかし、画面のデフォルトは、ほとんどの環境変数をシェルを起動するシェルから継承することだけです。ログインサブシェルは予期しない方法でいくつかの環境変数を変更する可能性があります。私は$ PATHの要素が基本的に置換された状況に遭遇しました。スーパーユーザーでthis particularly excellent answerという問題を解決しました。

sourceコマンドが使用できることがあります。これは、シェルコマンドではなく、screenコマンドのファイルを出力することに注意することが重要です。関連する他の(スクリーン)コマンドには、evalexecが含まれます。

+1

私の場合、編集が必要な.screenrcは.byobu/.screenrcにあります。 RHEL6 –

関連する問題