* / 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.