Sanırım bir Windows arka planından geliyorsun. Bu yüzden onları karşılaştıracağım (ben de Linux'ta yeniyim). Bir şeyleri anlamaya yardımcı olmak için kullanıcının yorumuma verdiği yanıtı buldum.
Windows'ta bir değişken kalıcı olabilir veya olmayabilir. Ortam değişkeni terimi, cmd kabuğunda SET komutu ile ve ayrıca değişken Windows GUI içinde ayarlandığında, böylece kayıt defterinde ayarlandığında ve yeni cmd pencerelerinde görüntülenebilir hale geldiğinde bir değişken kümesi içerir. ör. windows https://technet.microsoft.com/en-us/library/bb490998.aspx'deki set komutu için belgeler "Ortam değişkenlerini görüntüler, ayarlar veya kaldırır. Set parametresiz kullanıldığında, mevcut ortam ayarlarını görüntüler." Linux'ta set ortam değişkenlerini göstermez, ortam değişkenleri olarak çağırmadığı / ifade etmediği kabuk değişkenlerini görüntüler. Ayrıca Linux, değişkenleri ayarlamak için set kullanmaz (sonunda bir not olarak açıkladığım konumsal parametreler ve kabuk seçeneklerinden ayrı olarak), yalnızca onları görüntülemek için ve hatta sadece kabuk değişkenlerini görüntülemek için. Windows ayarlamak ve görüntülemek için set kullanır, örneğin set a = 5, linux kullanmaz.
Linux'ta, önyüklemede değişkenleri ayarlayan bir betik hazırlayabilirsiniz, örneğin /etc/profile
veya/etc/.bashrc
başka türlü, kalıcı değiller. RAM'de saklanırlar.
Linux'ta kabuk değişkenleri ve ortam değişkenleri arasında bir ayrım vardır. Linux'ta, kabuk değişkenleri yalnızca mevcut kabukta ve Ortam değişkenleri o kabukta ve tüm alt kabuklarda bulunur.
Kabuk değişkenlerini şu şekilde görüntüleyebilirsiniz: set
komutla görüntüleyebilirsiniz (bununla pencerelerin aksine, değişkenlerin linux'ta set komutu ile ayarlanmadığını unutmayın).
set -o posix; set
(bu set -o posix'i bir kez yapmak, çok fazla gereksiz şeyi göstermemeye yardımcı olur). Yaniset
kabuk değişkenlerini gösterir.
Ortam değişkenlerini şu şekilde görüntüleyebilirsiniz: env
komutla görüntüleyebilirsiniz:
kabuk değişkenleri, örneğin sadece a = 5
ortam değişkenleri dışa aktarımla ayarlanır, dışa aktarma da kabuk değişkenini ayarlar
Burada zzz kabuk değişkeninin zzz = 5 ile ayarlandığını görüyorsunuz ve çalışırken gösterildiğini görüyorsunuz set
ancak ortam değişkeni olarak .
Burada yyy'nin dışa aktarımla ayarlandığını görüyoruz, bu nedenle bu bir ortam değişkeni. Ve hem kabuk değişkenleri hem de ortam değişkenleri altında gösterildiğini görün
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
diğer kullanışlı konular
/unix/176001/how-can-i-list-all-shell-variables
/ubuntu/26318/environment-variable-vs-shell-variable-whats-the-difference
Not - biraz detaylandıran ve yazdıklarımı biraz düzelten bir nokta, linux bash'da "set" in "konumsal parametreleri" ve "kabuk seçeneklerini / niteliklerini" ve teknik olarak her ikisini ayarlamak için kullanılabileceğidir. bunlar değişkenlerdir, ancak man sayfaları onları bu şekilde tanımlamayabilir. Ancak yine de belirtildiği gibi set, kabuk değişkenlerini veya ortam değişkenlerini ayarlamaz). Bunu yaparsanız, set asdf
o zaman $ 1'i asdf olarak ayarlar ve eğer yaparsanız echo $1
asdf görürsünüz. Yaparsanset a=5
, a değişkenini 5'e eşit ayarlamaz. Konumsal parametre $ 1, "a = 5" dizesine eşit olacak şekilde ayarlanır. Dolayısıyla, eğer linux'ta a = 5 setini gördüyseniz, biri $ 1'de a = 5 dizesini istemediği sürece muhtemelen bir hatadır. Linux setinin ayarlayabileceği diğer şey, kabuk seçenekleri / nitelikleridir. -O ayarlarsanız bunların bir listesini görürsünüz. Ve örneğin yapabilirsinset -o verbose
, off, ayrıntılandırmayı açmak için (btw varsayılan kapalıdır, ancak bu bunda bir fark yaratmaz). Veya set +o verbose
ayrıntıyı kapatmak için yapabilirsiniz. Windows'un set komutu için böyle bir kullanımı yoktur.