it-swarm-tr.com

Ortam değişkenlerini nerede bildirirsiniz?

Doğru yerler nelerdir:

  1. Global çevre değişkenleri tüm kullanıcıları etkilemek mi istiyor?
  2. Kullanıcıya özel ortam değişkenleri?
59
Ivan
16
sagarchalise

Sagarchalise'nin cevabına eklemek için, bağlantının ayarlar için uygun yerler olarak önerdiği şeyleri özetleyebilirim.

Genel ayarlar için, sistem genelinde ortam değişkenleri

  • /etc/environment kullanın
  • /etc/profile veya /etc/bash.bashrc kullanmayın

Sayfadan:

/etc/environment [...] özellikle sistem çapında ortam değişken ayarları içindir. Bir komut dosyası değil, her satırda bir tane olmak üzere atama ifadelerinden oluşur. Özellikle, bu dosya sistem genelindeki yerel ayarları ve yol ayarlarını saklar.

/etc/profile kullanmak, gitmek için çok Unix-y bir yoldur, ancak işlevselliği Ubuntu altında büyük ölçüde azaltılmıştır. Yalnızca /etc/bash.bashrc işaret etmek ve /etc/profile.d adresinden giriş toplamak için var.

Sistemimde, profile.d'deki tek ilginç giriş girişi /etc/profile.d/bash_completion.sh.

Yerel veya kullanıcı başına ayarlar için

Ubuntu sayfasının önceki bir sürümü, ~/.pam_environment’i önerdi, ancak sayfa şu anda bu işe yaramazsa, kullanmanız gerektiğini önerir.

  • ~/.profile - Bu muhtemelen ortam değişken atamalarını yerleştirmek için en iyi dosyadır, çünkü başlangıç ​​işlemi masaüstü oturumu sırasında otomatik olarak DisplayManager tarafından ve bir metin konsolundan oturum açtığında oturum açma Shell tarafından otomatik olarak yürütülür.

  • ~/.bash_profile veya ~./bash_login - Bunlardan biri varsa, bash bir oturum açma Kabuğu olarak başlatıldığında, bash, ~/.profile yerine çalıştırır. Bash, ~/.bash_profile - ~/.bash_login tercih edecektir. [...] Bu dosyalar varsayılan olarak grafiksel bir oturumu etkilemeyecek. "

  • ~/.bashrc - "... değişkenleri ayarlamak için en kolay yer olabilir".
75
belacqua

Sende:

/ etc/profile: Bourne Kabuğu (sh (1)) ve Bourne uyumlu kabukları (bash (1), ksh (1), ash (1), ...) için sistem genelinde .profile dosyası.

lucid ve Maverick’in içinde olan

/etc/profile.d/*.sh

varsa ve kullanıcının Kabuğu bash ise:

/etc/bash.bashrc

Kullanıcı ortamı için, Shell'e özgü ve "login Shell" olarak kabul edilip edilmediği konusunda kafa karıştırıcı bir dizi vardır. Eğer Shell bash ise:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-Shell startup file

sh/dash için:

$HOME/.profile

zsh için bile denemeyeceğim bile bunu anlamak için .

7
msw

Önerildiği gibi https://help.ubuntu.com/community/EnvironmentVariables :

  1. Tüm kullanıcıları etkilemek isteyen küresel ortam değişkenleri, /etc/environment içine girmelidir.

  2. Kullanıcıya özel ortam değişkenleri ~/.pam_environment ile ayarlanmalıdır.

Ubuntu'da ortam değişkenlerini ayarlamak için profil ve rc dosyalarından kaçının. Bana değerlerinden daha fazla baş ağrısına neden oldular.

Bu, söylenenden daha kolay ancak;

Benim için var olan konfigürasyon boşluğuyla karşılaşmanız mümkündür. Aşağıdaki şifreli ana sayfa için geçici çözümü inceleyin.

~/.pam_environment:

PATH            DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK        DEFAULT=${HOME}/Applications/jdk

Neden çirkin statik yol? ${PATH} benim için işe yaramazdı. Girişimi birkaç kez buralarda çalışmayı denedim, ben de varsayılanların çirkin statik kopyasını yapıyorum :)

Şifreli Ev Klasörleri için Geçici Çözüm

Ubuntu'da Precise 12.04 Beta 2 sürümüne kadar olan sürümleri içerir, şifreli bir ev dizini kullanıyorsanız, /etc/pam.d/common-session 'u yüklemesini sağlamak için ~/.pam_environment öğesini değiştirmeniz gerekecektir. Bu çözüm görünüşte daha önceki sürümlerde işe yarar, ancak test etmedim.

Guenther Montag (g-montag) 2010-08-19 tarihinde yazdı:

Bu şifreli ev dizinleri ile ilgili bir sorun gibi görünüyor. ekledim

oturum gerekli pam_env.so

/etc/pam.d/common-session'ın sonunda ve şimdi ~/.pam_environment okunur. Şifrelenmiş ev dizinleri olmayan başka bir sistemde (ayrıca 10.04), etrafta çalışmak gerekmez. Belki de benim durumumda sistem şifresini çözmeden önce ~/.pam_environment okumaya çalışır.

Süper Kullanıcı hakkındaki cevabımdan uyarlandı: https://superuser.com/a/408373/66856

5
Alain O'Dea