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 var1ve var2mevcut ortamda faaliyet göstermektedir. var3Henüz ayarlanmadığı için için bir değer görmüyorsunuz .
" var3=..." İle başlayan satırdan sonra var1dış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 -cargü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 -cgeç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 executethisprogramdeğişkenin değerini bilmeyecektir FOO. Öte yandan, kullanırken: FOO=BAR; export FOO; executethisprogram Program executethisprogramdeğişkenin değerini bilecektir FOO.
export FOOdeğ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 .
lsyürütüldüğü sürecin bir çocuğudur. Ben yazarsanız lskomut istemine, interaktif kabuk üstüdür ve lsçocuktur. Kullanan bir komut dosyası lsvarsa, komut dosyası üst ve lsalt.