.Bashrc içinde ortam değişkeni belirlemenin en iyi yolu nedir?


Yanıtlar:


16

En iyi yol

export VAR=value

Fark

VAR=value

değişkeni yalnızca komut dosyasının süresi için ayarlar ( .bashrcbu durumda). Komut dosyasının alt süreçlerinde (varsa) VAR tanımlanmaz ve komut dosyası çıktıktan sonra VARgider.

export VAR=value

VARalt süreçlere geçirilen değişkenler listesine açıkça ekler . Denemek ister misiniz? Bir kabuk açın, yapın

PS1="foo > "
bash --norc

Yeni kabuk varsayılan istemi alır. Bunun yerine böyle bir şey yaparsanız

export PS1="foo > "
bash --norc

yeni kabuk yeni ayarladığınız istemi alır.

Güncelleme: Ian Kelling'in belirttiği gibi, değişkenler aşağıda .bashrcbelirtilen kabuktaki kabukta devam eder .bashrc. Daha genel olarak, kabuk her komut dosyası (komut kullanarak), source scriptnamekomut dosyasında ayarlanan değişkenler kabuğun ömrü boyunca devam eder.


1
"değişkeni yalnızca komut dosyasının süresi için ayarlar (bu durumda .bashrc)" Bu yanlış / yanıltıcıdır. Bu şekilde ayarlanan değişkenler .bashrc'yi okuyan etkileşimli kabuğun içinde kalır.
Ian Kelling

PS1ortam değişkeni olarak dışa aktarılacak değişkenin kötü bir örneğidir. Sadece kabuk olan çocuk süreçleri için anlamlıdır ve farklı kabuklar (örneğin, bash ve çizgi) tarafından farklı yorumlanır. En iyi uygulama, onu normal bir kabuk değişkeni olarak ayarlamaktır .bashrc. Ortam değişkenleri daha iyi örnekler HOME, PATH, EDITORvb
Anthony Geoghegan

10

Her ikisi de gayet iyi çalışıyor gibi görünüyor, ancak dışa aktarmayı kullanmak, değişkenin alt kabuklar ve diğer programlar için kullanılabilir olmasını sağlayacaktır. Bunu test etmek için deneyin.

Bu iki satırı .bashrc dosyanıza ekleyin

TESTVAR="no export"
export MYTESTVAR="with export"

Sonra yeni bir kabuk açın.

Çalışan echo $TESTVARve echo $MYTESTVARher değişkenin içeriğini gösterecektir. Şimdi aynı kabuğun içinde bu iki satırı .bashrc dosyanızdan kaldırın ve bashbir alt kabuk başlatmak için çalıştırın.

Koşu echo $TESTVARboş bir çıktıya sahip olacak, ancak koşu echo $MYTESTVAR"dışa aktarma" ile görüntülenecek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.