私が持っていると仮定しましょう
export MY_VAR=0
存在する~/.bashrc
。
GNOME端末が開いていて、この端末で$MY_VAR
値を200
。
echo $MY_VAR
この端末で200
表示します。
これで、GNOME端末で別のタブを開いて実行しました。
echo $MY_VAR
...代わりに200
私は持っています0
。
端末が環境変数を変更するときに、この修正(200に設定)がすべての後続のサブシェルなどで使用できるように200値を維持するにはどうすればよいですか?可能ですか?
ベストアンサー1
ㅏコピー環境はサブシェルに伝播されるため、次のように動作します。
$ export MY_VAR=200
$ bash
$ echo $MY_VAR
200
ただし、コピーなので、その値を親シェルに渡すことはできません。少なくとも環境を変更する方法では不可能です。
実際には、さらに一歩進んで、Gnome端末の新しいタブなど、親シェルとは別に実行される「兄弟」シェルが共有するグローバル変数のようなものを作成したいようです。
ほとんどの場合、答えは「環境変数がそのように動作しないためできません」です。しかし、別の答えがあります。つまり、いつでも何かをハッキングできるということです。 1つの方法は、変数の値をファイル(たとえば)に書き込ん~/.myvar
だ後にそれを含めることです~/.bashrc
。スタートそのファイルから読み取った値。
さらに一歩進むことができます。~/.myvar
formatを使用しMYVAR=200
てからsetを使用するPROMPT_COMMAND=source ~/.myvar
と、新しいプロンプトが表示されるたびに値が再度読み取られます。まだではないかなり共有グローバル変数ですが、実際のように動作し始めます。ただし、プロンプトが返されるまでアクティブではなく、これを実行する操作によっては深刻な制限が発生する可能性があります。
そしてもちろん、次の作業は自動的に行われます。書く環境変数は実際にはシェル間の通信メカニズムで~/.myvar
はなく、他の方法を見つける方が良いので、ここで停止します。