2016-05-07 8 views
0

任意のログインセッションですべてのbash端末インスタンスに環境変数などを持たせる方法がありますか?Bash:ログインごとの環境変数

私がやろうとしているのは、(すべてのターミナルウィンドウ、未来、そしておそらく現在の)すべてのターミナルウィンドウを変えることができる変数プロンプトです。切り替えのプロセスはあまり重要ではありませんが、私はそれが忘れられないものであることを望んでいます。

これまでのところ、私の 'switcher'スクリプトが編集する.bashrcにハードコードされた値のセットがあるようですが、これはちょっとハッキリしているようで、マイナーなものがあればすべてを破壊する傾向がありますエラー。

+1

「bashターミナルインスタンス」と「ログインセッション」と、これらのシェルの起動方法を定義してください。 –

+1

すでに開始されているプロセスの環境を変更することはできません。 bashrcは、ファイルまたは環境によって設定された3番目の場所から変数をロードしてから、プロンプトを設定するときに使用することができます。 – xvan

+1

'.bashrc'で別のファイルから' PS1'変数を 'ソース'し、 'PS1'の値を変更して、実行中のシェルで再度ソースすることができます。そうすれば、あなたのスイッチャーは* function *または* alias *になります。 –

答えて

1

私は最も簡単な解決策のために行くだろう。代わりに、変数のファイルにデータを書き込みます。

.bashrcにいくつかのヘルパーを作成して、値を自動的に取得/設定することもできます。ファイルがすべての要件を満たしているようです。

EDIT:ファイルからログインするたびにヘルパーに変数を設定させることもできます。

1

プロンプトをに変更する方法はありません。アクティブシェルを一度に使用できますが、あなたは.bashrcに関数を定義して、いつでもプロンプトを変更することができます。

PROMPT_COMMANDを使用してプロンプトを選択することもできます。同様にあなたの.bashrcに次のようなものを追加します。

dynamic_prompt() { 
    if [[ $PWD =~ some_regex ]]; then 
     use_prompt_1 
    else 
     use_prompt_2 
    fi 
} 

PROMPT_COMMAND=dynamic_prompt 
+2

ファイルを変更してから、 'PROMPT_COMMAND'にそのファイルがあればそれをチェックして、もしあればそれをプロンプトとして使うことができます。この方法で、すべてのアクティブな端末のプロンプトを一度に「変更」することができます。 – andlrc

+0

それは良い考えです。私はシグナルベースのソリューションがあるかどうかを調べようとしていましたが、ファイルはよりシンプルになります。 – chepner

+0

信号で何かが起こったら、面白いでしょう:-) – andlrc