Ubuntu 11.04 çalıştırıyorum. Bir bash oturumu başlatmak için terminali kullanıyorum ve bir ortam değişkeni eklemek istiyorum:
$r@hajt:~$ env THEVAR=/example
Ama işe yaramıyor. THEVAR sonuncusu olmak üzere tüm değişkenleri gösteriyor, ancak env
ye yapılan başka bir çağrı artık THEVAR
ı göstermiyor - env | grep THEVAR
hiçbir şey döndürmüyor.
Benzer şekilde, dışa aktarma (export THEVAR=/example
) veya diğer değişken atamaları (THEVAR=/example
) içeren komut dosyaları ortam değişkenini eklemez.
Bir şeyleri yanlış yaptığımı biliyorum, basit bir şey olması gerektiğini biliyorum, ama ne olduğunu bulamıyorum.
GÜNCELLEME: Sorumun gerçek anlamı şuydu: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Her neyse, en çok oy alan cevabı seçeceğim ve düzenlenmiş başlığı bırakacağım - sorduğum şey bu değildi)
env` değiştirilmiş bir ortamda bir program çalıştırır, ardından tüm değişiklikleri iptal eder.
Değişkeni sadece geçerli kabuk için ayarlamak için:
VARNAME="my value"
Geçerli kabuk ve geçerli kabuktan başlatılan tüm işlemler için ayarlamak için:
export VARNAME="my value" # shorter, less portable version
Gelecekteki tüm bash oturumları için kalıcı olarak ayarlamak için $HOME
dizininizdeki .bashrc
dosyanıza böyle bir satır ekleyin.
Kalıcı olarak ve sistem genelinde (tüm kullanıcılar, tüm işlemler) ayarlamak için /etc/environment dosyasına set değişkenini ekleyin:
sudo -H gedit /etc/environment
Bu dosya yalnızca aşağıdaki gibi değişken atamalarını kabul eder:
VARNAME="my value"
Burada export
anahtar sözcüğünü kullanmayın.
Ortam değişkenleri değişikliklerinin gerçekleşmesi için mevcut kullanıcıdan çıkış yapmanız ve tekrar giriş yapmanız gerekir.
Bir ortam değişkenini bir kez ayarlamak için, export
komutunu bir kabuk betiğinde değil, komut isteminde kullanın:
$ export THEVAR=/example
Değişken, kabuk oturumunun geri kalanı için veya ayarlanana kadar ayarlanacaktır.
Her seferinde bir ortam değişkeni ayarlamak için .bashrc
dosyasındaki (veya kabuğunuz için uygun başlatma dosyasındaki) export
komutunu kullanın.
Bir ortam değişkenini bir koddan ayarlamak için, kod içinde export
komutunu kullanın ve ardından kodu source
edin. Komut dosyasını çalıştırırsanız çalışmayacaktır.
Kaynak bulma ve yürütme arasındaki farkın açıklaması için şu yanıta bakın: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
Ubuntu'da kalıcı olarak yeni bir ortam değişkeni eklemek için (yalnızca 14.04'te test edilmiştir) aşağıdaki adımları kullanın:
sudo -H gedit /etc/environment
FOO=bar
eklemek istiyorsanız, yeni bir satıra FOO=bar
yazmanız yeterlidir