Yalnızca export
kabukta başlattığınız diğer programlar tarafından "görülmesi" gereken değişkenlere ihtiyacınız olur , oysa sadece kabuk içinde kullanılanların kullanılması gerekmez export
.
Bu man sayfasının söylediği şey:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
Bu, aşağıdakilerle gösterilebilir:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
Açıklama:
- İlk
${MYVAR}
önce bir Shell değişkeni olarak ayarlıyorum MYVAR="value"
. Kullanılması echo
yankı kabuğun bir parçası olduğu için bunun değerini yankı.
- Sonra ben yaratırım
echo.sh
. Bu temelde aynı olan küçük bir senaryo, sadece yankılanıyor ${MYVAR}
, ancak fark, farklı bir süreçte çalışması çünkü ayrı bir komut dosyası.
- Çağrılırken
echo.sh
yeni süreç kaynaklanan devralma değil, bunun nedeni çıkışlar şey${MYVAR}
- Sonra anahtar kelimeyle çevreme ihracat
${MYVAR}
yapıyorumexport
- Şimdi aynı şeyi
echo.sh
tekrar çalıştırdığımda ${MYVAR}
, ortamdan aldığı için içeriğini tekrarlıyor
Yani sorunuzu cevaplamak için:
Bir değişkenin nerede kullanılacağına, dışa aktarmanız gerekip gerekmediğine bağlıdır.