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.