Ortamın bir kopyası alt kabuklara yayılır, bu nedenle işe yarar:
$ export MY_VAR=200
$ bash
$ echo $MY_VAR
200
ancak bu bir kopya olduğundan, bu değeri ana kabuğa kadar elde edemezsiniz - en azından çevreyi değiştirerek değil.
Aslında Gnome Terminali'ndeki yeni sekmenizde olduğu gibi, ebeveynden ayrı olarak başlatılan "kardeş" mermileriyle paylaşılan, global bir değişken gibi davranan bir şey yapmak için gerçekten bir adım daha ileri gitmek istediğiniz gibi geliyor.
Çoğunlukla, cevap "yapamazsınız, çünkü ortam değişkenleri bu şekilde çalışmaz" dır. Ancak, başka bir cevap var ki, bir şeyleri her zaman kesebilirsin. Bir yaklaşım değişkenin değerini bir dosyaya yazmak gibi bir şey olur ~/.myvar
ve sonra bunu da içine alır ~/.bashrc
. Ardından, her yeni kabuk bu dosyadan okunan değerle başlayacaktır .
Bir adım daha ileri gidebilirsiniz - ~/.myvar
formatta olun MYVAR=200
ve ardından PROMPT_COMMAND=source ~/.myvar
her yeni komut isteminde değerin yeniden okunmasına neden olacak şekilde ayarlayın . Hala oldukça paylaşılan bir global değişken değil, ancak böyle davranmaya başlıyor. Yine de, bir geri dönüş yapılıncaya kadar aktif olmayacaktır, ki bu ne yapmaya çalıştığınıza bağlı olarak ciddi bir sınırlama olabilir.
Ve sonra, elbette, sonraki şey otomatik olarak değişiklikler yazmaktır~/.myvar
. Bu biraz daha karmaşık bir hal alıyor ve bu noktada duracağım, çünkü gerçekten, çevre değişkenleri kabuklar arası bir iletişim mekanizması olmak zorunda değildi ve bunu yapmanın başka bir yolunu bulmak daha iyi.