Kabuk değişkenleri
Kabuk değişkenleri, kapsamı geçerli kabuk oturumunda olan, örneğin etkileşimli kabuk oturumunda veya bir komut dosyasında bulunan değişkenlerdir.
Kullanılmayan bir ada bir değer atayarak bir kabuk değişkeni oluşturabilirsiniz:
var="hello"
Kabuk değişkenlerinin kullanımı, geçerli oturumdaki verileri takip etmektir. Kabuk değişkenlerinin adları genellikle küçük harflidir.
Ortam Değişkenleri
Ortam değişkeni, dışa aktarılan kabuk değişkenidir. Bu, yalnızca onu oluşturan kabuk oturumunda değil, aynı zamanda o oturumdan başlatılan herhangi bir işlem için de (yalnızca kabuklar değil) bir değişken olarak görüneceği anlamına gelir.
VAR="hello" # shell variable created
export VAR # variable now part of the environment
veya
export VAR="hello"
Bir kabuk değişkeni ihraç edildikten sonra, buna kaldırılırsa ya da onun "ihracat özelliği" (ile kaldırılana kadar kadar ihraç kalır export -n
içinde bash
), bu yüzden yeniden ihracat o gerek genellikle yoktur. Bir değişkenin ayarının kaldırılması unset
onu siler (ortam değişkeni olsun ya da olmasın).
Diziler ve ilişkilendirilebilir karmalar bash
ve diğer kabuklar ortam değişkenleri olarak dışa aktarılamaz. Ortam değişkenleri, değerleri dize olan basit değişkenler olmalıdır ve genellikle büyük harflerden oluşan adları vardır.
Ortam değişkenlerinin kullanımı, geçerli kabuk oturumundaki verileri izlemenin yanı sıra başlatılan herhangi bir işlemin bu verilerin bir parçası olmasına izin vermektir. Bunun tipik durumu PATH
, kabukta ayarlanabilen ve daha sonra, programlara tam bir yol belirtmeden başlatmak isteyen herhangi bir program tarafından kullanılabilen ortam değişkenidir.
Bir işlemdeki ortam değişkenlerinin toplanması genellikle "işlemin ortamı" olarak adlandırılır. Her sürecin kendi ortamı vardır.
Ortam değişkenleri yalnızca "iletilebilir", yani bir alt süreç , üst işlemindeki ortam değişkenlerini hiçbir zaman değiştiremez ve bir alt işlem için başlatıldıktan sonra ortamı ayarlamaktan başka bir üst işlem, bir alt süreç.
Ortam değişkenleri env
(argüman olmadan) ile listelenebilir . Bunun dışında, bir kabuk oturumunda dışa aktarılmamış kabuk değişkenleriyle aynı görünürler. Diğer programlama dillerinin çoğu genellikle "sıradan" değişkenleri ortam değişkenleriyle karıştırmaz (bu aşağıya bakın) , bu kabuk için biraz özeldir .
env
geçerli oturumda ayarlamadan bir işlem ortamındaki bir veya birkaç ortam değişkeninin değerlerini ayarlamak için de kullanılabilir:
env CC=clang CXX=clang++ make
Bu make
, ortam değişkeni CC
değere clang
ve olarak CXX
ayarlandığında başlar clang++
.
Bir işlem için ortamı temizlemek için de kullanılabilir :
env -i bash
Bu başlar, bash
ancak geçerli ortamı yeni bash
işleme aktarmaz ( kabuk başlatma komut dosyalarından yenilerini oluşturduğu için yine de ortam değişkenleri olacaktır ).
Fark örneği
$ var="hello" # create shell variable "var"
$ bash # start _new_ bash session
$ echo "$var" # no output
$ exit # back to original shell session
$ echo "$var" # "hello" is outputted
$ unset var # remove variable
$ export VAR="hello" # create environment variable "VAR"
$ bash
$ echo "$VAR" # "hello" is outputted since it's exported
$ exit # back to original shell session
$ unset VAR # remove variable
$ ( export VAR="hello"; echo "$VAR" ) # set env. var "VAR" to "hello" in subshell and echo it
$ echo "$VAR" # no output since a subshell has its own environment
Diğer diller
Çoğu programlama dilinde ortam değişkenlerini almayı ve ayarlamayı sağlayan kütüphane işlevleri vardır. Ortam değişkenleri basit bir anahtar / değer ilişkisi olarak saklandığından, genellikle dilin "değişkenleri" olmadığını unutmayın. Bir program, bir anahtara (ortam değişkeninin adı) karşılık gelen değeri (her zaman bir karakter dizesi olan) getirebilir, ancak daha sonra bu değeri bir tamsayıya veya dilin değere sahip olmasını beklediği herhangi bir veri türüne dönüştürmesi gerekir.
C, çevre değişkenleri kullanılarak erişilebilir getenv()
, setenv()
, putenv()
ve unsetenv()
. Bu yordamlarla oluşturulan değişkenler, C programının başlattığı herhangi bir işlemle aynı şekilde miras alınır.
Diğer diller, %ENV
Perl'deki karma veya ENVIRON
çoğu uygulamadaki ilişkisel dizi gibi aynı şeyi gerçekleştirmek için özel veri yapılarına sahip olabilir awk
.