İçinde bir değişken ayarlarken .bashrc
bunu kullanmalı mıyım?
export VAR=value
Yoksa bu yeterli olur mu?
VAR=value
Tam olarak fark nedir (eğer varsa)?
İçinde bir değişken ayarlarken .bashrc
bunu kullanmalı mıyım?
export VAR=value
Yoksa bu yeterli olur mu?
VAR=value
Tam olarak fark nedir (eğer varsa)?
Yanıtlar:
export VAR=value
iş
VAR=value
değişkeni yalnızca komut dosyasının süresi için ayarlar ( .bashrc
bu durumda). Komut dosyasının alt süreçlerinde (varsa) VAR tanımlanmaz ve komut dosyası çıktıktan sonra VAR
gider.
export VAR=value
VAR
alt 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 .bashrc
belirtilen kabuktaki kabukta devam eder .bashrc
. Daha genel olarak, kabuk her komut dosyası (komut kullanarak), source scriptname
komut dosyasında ayarlanan değişkenler kabuğun ömrü boyunca devam eder.
PS1
ortam 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
, EDITOR
vb
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 $TESTVAR
ve echo $MYTESTVAR
her 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 bash
bir alt kabuk başlatmak için çalıştırın.
Koşu echo $TESTVAR
boş bir çıktıya sahip olacak, ancak koşu echo $MYTESTVAR
"dışa aktarma" ile görüntülenecek