Yanıtlar:
İçin POSIX uyumlu kabukları (Bash dahil), standart diyor ki:
2.5.3 Kabuk Değişkenleri
Değişkenler ortamdan başlatılır [...] Bir değişken ortamdan başlatılırsa, derhal ihracat için işaretlenir; ihracat özel yerleşik bakın. Yeni değişkenler, değişken atamaları, [vb.] İle tanımlanabilir ve başlatılabilir .
Ve hakkında export
:
export name[=word]...
Kabuk, verme niteliğini, belirtilen adlara karşılık gelen değişkenlere verir; bu, daha sonra yürütülen komutlar ortamında olmalarına neden olur.
Kabuğun bakış açısından, sadece değişkenler vardır. Bazıları kabuk başlatıldığında ortamdan gelmiş olabilir ve bazıları da kabuğun başladığı işlemlerin ortamına aktarılmış olabilir.
("Çevre" gerçekten başladığında sürece sadece bir dizi dizeden geçer. Süreç çalışırken, ondan hoşlandığı her şeyi yapabilir, onu kullanabilir, görmezden gelebilir, üzerine yazabilir. diğer süreçlere başlamak başka bir şey olabilir, ancak elbette tüm çevre değişkenlerini tekrar geçirmek normaldir.)
POSIX olmayan bir kabuk kullanıyorsanız csh
, işler farklı olabilir:
$ csh
% echo $foo
foo: Undefined variable.
% setenv foo bar
% echo $foo
bar
% set foo=asdf
% echo $foo
asdf
% env |grep foo
foo=bar
% exit
Bunlar bir ve aynı değişkenlerdir. Kabukta, diğer programlama dillerinin aksine, ortam değişkenleri ve kabuk değişkenleri aynı ad alanını paylaşır. Kabukta, bir ortam değişkeni, dışa aktarılmış olan bir kabuk değişkenidir export
.
Örneğin, bir önceki " Kabuk değişkenleri ve ortam değişkenleri arasındaki kullanım farkı nedir? "
Kabuk Değişkeni yalnızca geçerli kabuğa kullanılabilir, sistem çapında kullanılamaz. Diğer taraftan Çevresel Değişken Sistem Genişliğinde kullanılabilir. Geleneksel olarak Shell Değişkeni küçük harf, Çevre Değişkeni büyük harf olarak yazılır. Kabuk değişkeninin ortam değişkeni olarak çalışmasını sağlayabilirsiniz, dışa aktarmanız yeterlidir.