Yanıtlar:
Bu Bash man sayfasından bir alıntıdır:
export [-fn] [name [= word]] ...
export -p
Verilen adlar, daha sonra yürütülen komutların ortamına otomatik olarak dışa aktarılmak üzere işaretlenir. -F seçeneği belirtilirse, adlar işlevlere başvurur ...
Değişkene yalnızca mevcut ortamda ihtiyacınız varsa, dışa aktarmayı kullanmak gerekmez.
var=value
Düzenle:
Dışa aktarma olmadan: sadece mevcut ortam. İhracatla: mevcut ortam ve çocuk ortamları.
Aşağıda, alt ortamdaki bir değişkenin kullanılabilirliği üzerindeki dışa aktarmanın etkisinin ve alt ortamdaki değişikliklerin üst öğeyi etkilemediğinin bir gösterimi verilmiştir:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
İlk eko sonra ( echo "parent..."
) Her iki nedeni "123" ve "456" bakın var1
ve var2
mevcut ortamda faaliyet göstermektedir. var3
Henüz ayarlanmadığı için için bir değer görmüyorsunuz .
" var3=...
" İle başlayan satırdan sonra var1
dışa aktarılmadığı için bir değer görmüyorsunuz . Sen yapmak için bir değer gördüğünüz var2
çünkü edildi ihraç etti. İçin bir değer görüyorsunuz var3
çünkü yalnızca alt ortam için ayarlanmış .
( isteğe bağlı bash -c
argümanın içeriğiyle bir komut dosyası çalıştırmaya eşdeğerdir -c
. Bir komut dosyası veya başka bir yürütülebilir dosya veya bu durumda, bash -c
geçerli ortamın alt öğesi olma argümanı , sonuçta elbette çocuğun üst.)
"Komut dosyasında" değişkenin değerleri değiştirilir. Şimdi bu yeni değerleri çıkarıyor.
"Komut dosyası" tamamlandığında, yürütme üst ortama geri döner (bu durumda komut satırı). Son ekodan sonra, alt ortamda yapılan değişiklikler üst öğeyi etkilemediğinden orijinal değerleri görürsünüz.
export
- değişkenleri bu alt ortamlar için kullanılabilir kılmak.
Bunu sen söyledin
Ortam değişkenini ayarlamak için her zaman export komutunu kullanıyorum
Bu şekilde ifade ettiğiniz gibi, bir çevresel değişkeni nasıl devam ettirdiğinizi gerçekten sormaya çalıştığınız anlaşılıyor. Bunu yapmak export VAR="foo"
için ifadenizi $ HOME / .bash_profile dosyanıza (bash kullanıyorsanız) yerleştirmeniz gerekir. Bu çevresel değişkenin kök dışındaki tüm kullanıcılar için kalmasını istiyorsanız, / etc / profile dizinine ekleyin. Kök kullanıcı için de eklenmesini istiyorsanız, /root/.bash_profile olarak ayarlayın.
Bu, bash'ın tercih edilen kabuk olduğu tüm giriş kabukları için çalışacaktır. Giriş yapmayan kabuklar için .bashrc kullanmanız gerekir. Diğer mermiler için hiçbir fikrim yok: D
ihracat bunu yapmanın en basit yoludur, neden onu bırakmıyorsunuz?
export VARIABLE=value # for Bourne, bash, and similar shells
setenv VARIABLE value # for csh and similar shells
FOO=BAR; executethisprogram
Program executethisprogram
değişkenin değerini bilmeyecektir FOO
. Öte yandan, kullanırken: FOO=BAR; export FOO; executethisprogram
Program executethisprogram
değişkenin değerini bilecektir FOO
.
export FOO
değişkeni FOO
, komutun verildiği ortamın alt süreçlerinden erişilebilmesi için işaretleyen bir komuttur . Bu ebeveyn bir komut dosyası veya etkileşimli bir kabuk olabilir.
Bunun gibi bir şey de yapabilirsiniz:
VAR=val application
Örneğin:
LANG=C ls --help
İngilizce çıktı.
LANG=pl_PL ls --help
Lehçe çıktı (varsa).
Geçmişte sh olarak VAL = val veremezdiniz. Zorundaydın
VAL=val; export VAL
ls
, geçerli (üst) ortamdaki değişkenin değerini etkilemeden alt ortam için değişkenin değerini ( örneğin) ayarlar .
ls
yürütüldüğü sürecin bir çocuğudur. Ben yazarsanız ls
komut istemine, interaktif kabuk üstüdür ve ls
çocuktur. Kullanan bir komut dosyası ls
varsa, komut dosyası üst ve ls
alt.