* / Etc / ortamında ortam değişkenlerine * atıfta bulunuluyor mu?


19

Yakın zamanda keşfettim /etc/environment, bu basit ortam değişkenlerini komut dosyalarından daha standart bir yol olarak görüyor, ancak / etc / environment dosyasındaki ortam değişkenlerine geri başvurmanın bir yolu olup olmadığını merak ediyordum.

Yani, bende:

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"

$JAVA_HOME/binPATH tanımına eklemeye çalışırsam , enterpolasyonlu değişkeni değil $ JAVA_HOME / bin alıyorum. Bunu düzeltmek /biniçin yola girdiler eklemek için profile.dsh ortam.sh oluşturuyorum , ancak bu özensiz ve dağınık görünüyor.

/ Etc / environment içindeki ortam değişkenlerini geri göndermenin bir yolu var mı?

Yanıtlar:


13

/etc/environmentDosya tarafından okunan pam_envPAM modülü . Sadece sağ taraftaki ikame olmadan basit anahtar / değer çiftlerini destekler.

Değeri ikameler veya diğer kabuk genişletmeleriyle oluşturmak istiyorsanız, bir kabuktan geçmeniz gerekir. /etc/profile(veya içindeki bir dosya /etc/profile.d) bunlar için doğru yerdir. Burası geleneksel bir yerdir ( /etc/environmentunix sistemleri tarihinde nispeten yeni bir yeniliktir) ve kesinlikle kullanmakla ilgili özensiz bir şey yoktur. Bunun en önemli yararı, /etc/environmentkabuk içermeyen oturum açma yöntemleriyle veya Bourne olmayan kabuk kullanan kullanıcılar için bile ortam değişkenlerinin ayarlanmasına izin vermesidir, ancak bunlar uygulamada yaygın değildir.


İkame olmadan, çok fazla fazlalık ile sonuçlanırsınız /etc/environment, başvurdum /etc/profile, öneriniz için teşekkürler.
— SAFX

2

Ubuntu belgeleri bunu imkansız hale getiriyor. AMA, bir cevap var.

CEVAP : Sistemde kalıcı, sistem çapında ortam değişkenleri oluşturma/etc/.bashrc

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

Ayrıntılar:
İşte Ortam Değişkenleri belgelerinden daha fazla ayrıntı .
Resmi öneri, /etc/environmentdenediğiniz gibi kullanmaktır . Sorun, bu dosya bir komut dosyası değil. Başka bir deyişle, değişken bildirimlerinde değişkenleri kullanamazsınız.

Dokümantasyon diğer 2 "Tavsiye Edilmez" dosyası ile devam eder
/etc/profileve /etc/bash.bashrc.

/etc/profile"/etc/bash.bashrc dosyasını çağırmaktan çok daha fazlasını yapmaz". Bunun yerine seçin

/etc/bash.bashrc çünkü "Ubuntu, kullanıcı bir kabuk veya masaüstü ortamına her girdiğinde bu dosyayı yürütmek için varsayılan olarak yapılandırılmıştır."


Bazı Ubuntu geliştiricileriyle istişare ederek EnvironmentVariables'ı güncelledim , bu nedenle bu "önerilmez" ifadeleri artık mevcut değil.
— Gunnar Hjalmarsson

msgstr "her kullanıcı bir kabuğa girdiğinde". kabuk girecek kullanıcı olmadığında ne yapmalıyım? Başlangıçta yazılım çalıştıran otomatik kullanıcılarım için ortam değişkenlerine ihtiyacım var. Örneğin, yalnızca 6 satır proxy yapılandırması var. Ben onunla ne yapmalıyım?
— eis
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.