Aradaki fark nedir:
a=b
ve
export a=b
Bash olarak mı?
İkisinin de çevre değişkenlerini tanımladığını biliyorum, ancak farkı tamamen anlamıyorum.
Aradaki fark nedir:
a=b
ve
export a=b
Bash olarak mı?
İkisinin de çevre değişkenlerini tanımladığını biliyorum, ancak farkı tamamen anlamıyorum.
Yanıtlar:
export
değişkeni alt işlemlere geçirir.
Örneğin, eğer yaptıysanız
FOO=bar
o zaman FOO'yu kontrol eden bir alt işlem değişkeni bulamazdı.
export FOO=bar
alt işlemin onu bulmasına izin verirdi.
Ancak FOO
, zaten bir ortam değişkeni olarak tanımlandıysa, o FOO=bar
zaman ortam değişkeninin değerini değiştirir.
Örneğin:
FOO=one # Not an environment variable
export FOO # Now FOO is an environment variable
FOO=two # Update the environment variable, so sub processes will see $FOO = "two"
Eski mermiler export FOO=bar
sözdizimini desteklemiyordu ; yazmak zorundaydın FOO=bar; export FOO
.
export
" kullanmazsanız , bir ortam değişkeni tanımlamıyorsunuz, sadece bir kabuk değişkeni tanımlıyorsunuz. Kabuk değişkenleri yalnızca kabuk işleminde kullanılabilir; ortam değişkenleri mevcuttur herhangi sonraki süreçte sadece kabukları. Ek olarak, alt kabuklar parantez içinde yer alan ve kabuk değişkenlerine erişebilen komutlardır, oysa bahsettiğiniz şey kabukları olan alt süreçlerdir.
Ayrıca, değişkeni dışa aktarma kullanmadan çağıran kabuk için kullanılabilir duruma getirmek istiyorsanız, bunu yapabilirsiniz:
A.ksh dosyası -
#!/bin/ksh
FOO=bar
Komut isteminde, bunu çalıştırın
> . a.ksh
Bu komutları aynı kabuk içinde çalıştıracak ve $ FOO kullanılabilir olacaktır.
Buna karşılık,
> a.ksh
$ FOO 'yu yalnızca a.ksh içinde hazırlar, a.ksh çağrısından sonra mevcut olmaz.