Linux'ta bir değişkeni kalıcı olarak nasıl dışa aktarabilirim?


156

RHEL6 çalıştırıyorum ve böyle bir ortam değişkeni ihraç var:

export DISPLAY=:0

Terminal kapatıldığında bu değişken kaybolur. Bu değişken değerinin her zaman belirli bir kullanıcıyla var olması için bunu kalıcı olarak nasıl eklerim?

Yanıtlar:


172

Kabuk yapılandırma dosyanıza, örneğin $HOME/.bashrcglobal olarak veya daha fazlasında ekleyebilirsiniz /etc/environment. Bu satırları ekledikten sonra, değişiklikler GUI tabanlı sistemlerde anında yansımayacaktır. Terminalden çıkmanız veya yeni bir tane oluşturmanız ve sunucuda oturumdan çıkmanız ve bu değişiklikleri yansıtacak şekilde oturum açmanız gerekir.


3
Teşekkürler, bu yardımcı oldu. Yeniden başlatmadan değişikliklerin etkili olmasını nasıl sağlayabilirim? (Ben Linux acemi)
Bitterblue

6
@ mini-me - ~ / bashrc her kabuk açışınızda çekilir. Açıkça yüklemek için sourceörn. - kullanın > source ~/.bashrc.
kostja

@kostja Tüm yeni mermiler için mi? Bu env değişkenlerini değiştirmeden önce tutulma çalışıyorsa ve tutulmanın vars değişmiş olmasını istiyorsanız, tutulmayı yeniden başlatmam gerekir mi?
Bitterblue

1
@ mini-me: bir işlemin ortamı genellikle arayan tarafından ayarlanır ve işlemin içinden değiştirilir. Env'yi çalışan bir işlemin dışından değiştirmek alışılmadık bir durumdur ve bununla yapılamaz export, ancak bir hata ayıklayıcı ile deneyin
Antoine

1
@ Mr.Hyde: Genellikle önemli değil. Dosyalar yukarıdan aşağıya ayrıştırılır, bu nedenle değişken tanımı başka bir taneye bağlıysa buna göre sıralanmalıdır. Evet, dosyanın sonu gayet iyi.
Antoine

120

Kalıcı bir ortam değişkenini aşağıdaki gibi ayarlamak için üç dosyayı düzenlemeniz gerekir:

  • ~ / .Bashrc

    Herhangi bir terminal penceresini açtığınızda bu dosya çalıştırılır. Bu nedenle, tüm terminal pencerelerinizde kalıcı bir ortam değişkenine sahip olmak istiyorsanız, bu dosyanın sonuna aşağıdaki satırı eklemeniz gerekir:
    export DISPLAY = 0

  • ~ / .Profile

  • Bashrc ile aynı , işletim sisteminizin her girişinde ortam değişkeninizin olması için belirtilen komut satırını bu dosyanın sonuna koymalısınız.

  • / Etc / çevre

  • Ortam değişkeninizin her pencerede veya uygulamada (yalnızca terminal penceresinde değil) olmasını istiyorsanız, bu dosyayı düzenlemeniz gerekir. Bu dosyanın sonuna aşağıdaki komutu ekleyin:
    DISPLAY = 0
    Bu dosyada export komutu yazmak zorunda olmadığınızı unutmayın

Normalde bu değişiklikleri uygulamak için bilgisayarınızı yeniden başlatmanız gerekir. Ancak şu komutlarla bashrc ve profil değişikliklerini uygulayabilirsiniz :

$ source ~/.bashrc
$ source ~/.profile

Ancak / etc / çevre için yeniden başlatma dışında bir seçeneğiniz yok (bildiğim kadarıyla)

  • Basit Bir Çözüm

  • Tüm bu işleri yapmak için bu prosedürler için basit bir senaryo yazdım. Ortam değişkeninizin adını ve değerini ayarlamanız yeterlidir.

    #!/bin/bash
    echo "Enter variable name: "
    read variable_name
    echo "Enter variable value: "
    read variable_value
    echo "adding " $variable_name " to environment variables: " $variable_value
    echo "export "$variable_name"="$variable_value>>~/.bashrc
    echo $variable_name"="$variable_value>>~/.profile
    echo $variable_name"="$variable_value>>/etc/environment
    source ~/.bashrc
    source ~/.profile
    echo "do you want to restart your computer to apply changes in /etc/environment file? yes(y)no(n)"
    read restart
    case $restart in
        y) sudo shutdown -r 0;;
        n) echo "don't forget to restart your computer manually";;
    esac
    exit
    

    Bu satırları bir shfile'a kaydedin, ardından yürütülebilir yapın ve çalıştırın!


    1
    Senaryo çok iyi çalıştı. Ubuntu 14.04 yükledim. Sadece boş bir dosyaya yukarıda içeriği yapıştırılan bu adlandırılmış insert_var.sh sonra, chmod -x insert_var.shdaha sonra, bash insert_var.sh. Teşekkürler.
    Brunno Vodola Martins

    Ubuntu'da bir Terminal Penceresi açtım ve ihracat MY_VAR = 1 girdim. Bu Değişken MY_VAR nerede saklanacak?
    vgokul129

    29

    satırı .bashrcveya kısmına ekleyin .profile. Ayarlanan değişkenler $HOME/.profilegeçerli kullanıcı için aktif, değişkenler /etc/profileglobaldir. .bashrcHer bash oturumun başında çekilir.


    27

    Ubuntu sistemlerinde aşağıdaki konumları kullanın:

    1. JAVA_PATH=/usr/local/javaMağaza genelinde formatta sistem genelinde kalıcı değişkenler

      /etc/environment
      

    2. export PATH="$JAVA_PATH:$PATH"Store in gibi değişkenlere gönderme yapan sistem genelinde kalıcı değişkenler

      /etc/.bashrc
      
    3. Kullanıcıya PATH DEFAULT=/usr/bin:usr/local/bindepo biçimindeki kullanıcıya özel kalıcı değişkenler

      ~/.pam_environment
      

    # 2 hakkında daha fazla bilgi için bu Ubuntu'ya Sor cevabını kontrol edin . NOT: # 3, Ubuntu önerisidir ancak gerçek dünyada güvenlik endişeleri olabilir.


    2

    Belirli bir örnek: Java 7 ve Java 6 yüklü, bazı sürümleri 6 ile, diğerleri 7 ile çalıştırmak gerekir. Bu JAVA_HOMEnedenle, maven her yapı için ne istediğini alır böylece dinamik olarak değiştirmek gerekir . Aşağıdakileri yaptım:

    • j6.shsadece JAVA_HOME=...j6 yüklemek için yol ihracat yapar oluşturulan komut dosyası ...
    • sonra, yukarıdaki yorumlardan biri tarafından önerildiği gibi, bir yapı için J6 gerektiğinde, ben j6.shilgili komut terminalinde kaynak çalıştırın . Varsayılan olarak, my JAVA_HOMEöğesi J7 olarak ayarlanmıştır.

    Bu yardımcı olur umarım.


    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.