Ortam değişkenlerini nasıl ekleyebilirim?

11.04 Ubuntu ç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. Sonuncusu olan THEVAR ile tüm değişkenleri gösterir, ancak başka bir çağrı env göstermiyor THEVAR artık- env | grep THEVAR hiçbir şey döndürmez.

Benzer şekilde, dışa aktarmalı komut dosyaları (export THEVAR=/example) veya diğer değişken atamaları (THEVAR=/example) ortam değişkenini eklemeyin.

Yanlış bir şey yaptığımı biliyorum, basit bir şey olması gerektiğini biliyorum ama ne olduğunu bulamıyorum.

UPDATE: Sorumun asıl anlamı şuydu:: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell

(Her neyse, en çok oylanan 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, sonra tüm değişiklikleri reddeder.

Değişkeni ayarlamak için sadece mevcut kabuk için:

VARNAME="my value"

Geçerli kabuk için ayarlamak ve tüm süreçler geçerli kabuktan başlatıldı:

export VARNAME="my value"      # shorter, less portable version

Bunu ayarlamak için kalıcı olarak gelecekteki tüm bash oturumları için böyle bir satır ekleyin .bashrc dosyanızda $HOME dizin.

Kalıcı olarak ayarlamak ve sistem genelinde (tüm kullanıcılar, tüm işlemler) /etc/ ortamında set değişkeni ekle:

sudo -H gedit /etc/environment

Bu dosya yalnızca aşağıdaki gibi değişken atamalarını kabul eder:

VARNAME="my value"

Kullanmayın export anahtar kelime burada.

Geçerli kullanıcı ve giriş tekrar çıkış yani çevre değişikliklerin değişkenleri gerekir.

Ortam değişkenini bir kez ayarlamak için export komut isteminde, kabuk komut dosyasında değil:

$ export THEVAR=/example

Değişken, kabuk oturumunun geri kalanı için veya ayarlanana kadar ayarlanır.

Her seferinde bir ortam değişkeni ayarlamak için export komut içinde .bashrc dosya (veya kabuğunuz için uygun başlatma dosyası).

Bir komut dosyasından bir ortam değişkeni ayarlamak için export komut dosyasında komut ve sonra source komut. Komut dosyasını çalıştırırsanız çalışmaz.

Kaynak bulma ve yürütme arasındaki farkın açıklaması için bu cevaba 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:

  1. Bir terminal açın (tuşuna basarak CtrlAltT)
  2. sudo -H gedit /etc/environment
  3. Parolanızı yazın
  4. Yeni açılan metin dosyasını düzenleme:
    örneğin, eklemek istiyorsanız FOO=bar, o zaman sadece yaz FOO=bar yeni bir satırda
  5. Sakla onu
  6. , Çıkış ve Giriş bir kez daha kurtardı.
  7. Gerekli değişiklikler yapılır.

Komut dosyası tamamlandıktan sonra ortam / var değişikliklerinin devam etmesini sağlamak için aşağıdakileri kullanmanız gerekirsource ./script.sh veya kaynak için steno gösterimi, ".", istemek . ./script.sh

Source, komut dosyasındaki komutları yazdığınız gibi yürütür... yani senaryoyu görünümünü, çıkış olarak değiştirin... yani eğer komut dosyanız bir şeyi kontrol ederse ve false ise, örneğin arama yoluyla çıkmaya karar verirse exit 0, geçerli terminal / kabuk oturumunuzu sonlandırır.

Oldukça geç olduğunu biliyorum, ancak tüm kullanıcılar için bir ortam değişkeni eklemek istiyorsanız (örneğin JAVA kullanımı) - aşağıdakileri yapabilirsiniz:

1) Açık /etc/bash.bashrc nano'yu kullanarak (herhangi bir düzenleyiciyi kullanabilirsiniz, kullanıcı dostu olması söz konusu olduğunda en kötüsü olduğu için vim'i tercih etmiyorum - kişisel bir şey değil).

2) Dosyaya ekle:

export VAR=path export PATH=$PATH:/bin3) (Kutuyu zıplatabilirseniz daha iyi olur) - ya da sadece yeni bir SSH oturumu açın ve `env' komutunu kullanarak onaylayın.

ANCAK, her kullanıcının bunun için ayrı bir ayara sahip olmasını istiyorsanız, bir değişiklik yapmanız gerekir (komut dosyası) .bashrc dosya altında ~/.bashrc (veya /home/$USER/ linux sistemlerinde yeniyseniz)

Komut dosyası aracılığıyla bir şeyler yapıyorsanız, ortam değişkenini kalıcı olarak ayarlamanın kolay bir yolu, komut dosyanızdaki ifadenin altına konur,

if [[ ! -d "$MyVar" ]]; then     export MyVar="abc"    echo 'export MyVar="abc"' >> ~/.bashrcfi

Pwd gibi ifadeleri değerlendirmeniz gerekiyorsa, bunu kullanabilirsiniz, örneğin,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc

Ubuntu veya herhangi bir Unix tabanlı sistem kullanıyorsanız, değişkenleri dışa aktarın ~/.bashrc dosya. Bu gizli bir dosyadır ve oraya terminalden veya dosya sistemindeki gizli dosyaları göstererek ulaşabilirsiniz.

Ardından dosyayı düzenleyin ve ayarlayın export THEVAR=/example işte, kurtar ve bitti.

JAVA uygulamasını TOMCAT kullanarak dağıtıyorsanız ortam değişkenlerini şu şekilde ayarlayabilirsiniz:

1.sudo su ve cd'ye / var / lib / tomcat8 / bin / (veya tomcat bin yolunuz hangisi olursa olsun)

  1. dokun setenv.sh (eğer mevcut değilse), eğer dosya zaten mevcutsa 'vi setenv.sh '

  2. chmod 777 setenv.sh (dosyayı çalıştırılabilir yap)

  3. vı setenv.sh ve setenv'de aşağıdaki satırı ayarlayın.shexport anahtarı = değer

  4. sudo systemctl tomcat'i yeniden başlatın.hizmet

Java dosyanızda değişkenin ayarlanıp ayarlanmadığını kontrol etmek için aşağıdaki kodu kullanabilirsiniz

private static void printEnv() {    System.out.println("******************************Environment Vars*****************************");    Map<String, String> enviorntmentVars = System.getenv();    enviorntmentVars.entrySet().forEach(System.out::println);    System.out.println("******************************system Vars*****************************");    Properties enviorntmentProperties = System.getProperties();    enviorntmentVars.entrySet().forEach(System.out::println);}

Diğeri genel değişkenlerle ilgilidir, bu böyle bir sınırlama eklemez. Ayrı tutardım.

https://help.ubuntu.com/community/EnvironmentVariables

Tanımlandığında / dışa aktarıldığında.bashrc, düzgün çalışıyor.

Peki ya `THEVAR=/example’?

[Google Earth ve $BROWSER ortam değişkeni] 'nin olası kopyası (Google Earth and $BROWSER environment variable - Ask Ubuntu )