Ortam değişkenlerine referans * * / etc / environment?

18

Yakın zamanda, /etc/environment öğesini keşfettim, bu da basit ortam değişkenlerini komut dosyalarından daha standart bir şekilde oluşturuyordu, ancak / etc / environment dosyasındaki ortam değişkenlerini geri göndermenin bir yolu olup olmadığını merak ediyordum.

Yani, bende var:

JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

PATH tanımına $JAVA_HOME/bin eklemeyi denerseniz, enterpolasyonlu değişkeni değil, $ JAVA_HOME / bin alırım. Bunu düzeltmek için, /bin girdisini yola eklemek için profile.d içinde environment.sh dosyası oluşturuyorum, ancak bu durum, özensiz ve düzensiz görünüyor.

/ etc / environment içindeki ortam değişkenlerine geri dönmenin bir yolu var mı?

    
sordu Stefan Kendall 13.11.2011 17:38

2 cevap

12

/etc/environment dosyası pam_env PAM modülü tarafından okunur. Sağ taraftaki hiçbir değişiklik olmadan yalnızca basit anahtar / değer çiftlerini destekler.

Değeri, yer değiştirmeler veya diğer kabuk genişletmeleriyle oluşturmak istiyorsanız, bir kabuktan geçmeniz gerekir. Bunlar için /etc/profile (veya /etc/profile.d dosyasındaki bir dosya) doğru yer. Bu geleneksel bir yerdir ( /etc/environment unix sistemleri tarihinde nispeten yeni bir yeniliktir) ve kesinlikle onu kullanmanın özensiz bir tarafı yoktur. % Co_de% 'nin temel faydası, bir kabuk içermeyen oturum açma yöntemleriyle veya Bourne dışı bir kabuk kullanan kullanıcılar için bile ortam değişkenlerinin ayarlanmasına izin vermesidir, ancak bunlar uygulamada yaygın değildir.

    
verilen cevap Gilles 13.11.2011 18:10
2

Ubuntu dokümantasyonu bunu imkansız kılıyor. AMA, bir cevap var.

CEVAP : /etc/.bashrc 'de kalıcı, sistem geneli ortam değişkenleri oluşturun

JAVA_HOME="/tools/java"
...
PATH="$JAVA_HOME:$PATH"  

Detaylar:
Burada, Ortam Değişkenleri dokümantasyonundan daha fazla ayrıntı bulabilirsiniz.
Resmi öneri, denediğiniz gibi /etc/environment kullanmaktır. Sorun şu ki bu dosya bir betik dosyası değil. Başka bir deyişle, değişken beyanlarındaki değişkenleri kullanamazsınız.

Belge, diğer 2 "Önerilen Değil" dosyasıyla devam ediyor

/etc/profile ve /etc/bash.bashrc .

/etc/profile "/etc/bash.bashrc dosyasını çağırmaktan biraz daha fazlasını yapıyor". Öyleyse yerine

/etc/bash.bashrc "Bir kullanıcı bir kabuk veya masaüstü ortamı her girdiğinde Ubuntu varsayılan olarak bu dosyayı yürütecek şekilde yapılandırılmıştır."

    
verilen cevap csi 02.12.2013 16:59

Etiketlerdeki diğer soruları oku