Herkes için küresel ortam değişkeni ayarlama


17

Bir değişken ayarlarsam /etc/environment, yalnızca içerideyken yöneticilere uygulanır sudo su.

Değişkenlerin herkese uygulanmasını nasıl sağlayabilirim? Özellikle terminaldeyken? İçindeki ayarlar /etc/enviromentbash için geçerli değil mi?

Yanıtlar:


13

/etc/environmentGüncelleştirme sadece bir sonraki oturumda üzerinde çalışacak, otomatik olarak yeniden değil.

Bu, diğer kullanıcılar için zaten başlatılmış oturumlar için değiştiremeyeceğiniz anlamına gelir.

İçinde ne varsa "yeniden yüklemek" /etc/environmentistiyorsanız, aşağıdaki komuta ihtiyacınız vardır:

source /etc/environment

Ancak yine de yalnızca mevcut oturumunuz için çalışır, diğer kullanıcılar yeni bir oturum başlatana veya yukarıdaki komutu kendi oturumlarında çalışana kadar etkilenmez.


4

TL; DR

Bu yapılandırma dosyaları global ( /etc/environment, /etc/profile) veya kullanıcıya özgü ( ~/.profile, ~/.bashrc) yalnızca bir sonraki oturum açma / oturumda işlenir.

Küresel dosyaları tüm kullanıcılar (sadece kök) için geçerli ... ama ortamda yansıyan değişiklikleri görmek için giriş oturumu yeniden başlatmanız gerekir. Bu sugözlemlediğiniz gibi arayarak veya oturumu kapatıp tekrar açarak veya yeniden başlatarak olabilir. Yapabilirsin sukök olmayan bir kullanıcıya ve onlar da çevre değişiklikler görecekti.

Küresel ortamı almak için yeniden başlatmanız veya tekrar oturum açmanızın nedeni, ortamın ana süreçlerden devralınması ve çalıştırdığınız her şeyin kök işleminin giriş kabuğunuz olması ... çevre ... o zaman süreçler giriş kabuğu içinde de başlatılmaz. Elbette, tek tek işlemler için onları başlatırken ortamı ayarlayabilir / güncelleyebilirsiniz, ancak giriş kabuğu için ortamı ayarlamanız ve değişikliği görebilmeleri için tüm alt işlemleri yeniden başlatmanız gerekir.

Global Çevre

Başka söz birisi olarak, değişiklikler için yeniden başlatma ya da çıkış / giriş bilgilerinin olması /etc/profile, /etc/profile.d/*.shve /etc/environmentalınmayı.

Bunun nedeni, bu dosyalar genel ortamı belirtmesine rağmen ... oturum açıldığında yalnızca bir kez çalıştırıldıklarından ve varolan oturumların / oturumların bu dosyalardaki değişiklikleri yansıtmamasıdır. Yeniden başlatma, herkesin giriş yapmasını, onları yeni ortamı almaya zorlar.

Kendi oturum oturumunuzda source /etc/profile, değişiklikleri yeniden başlatma veya oturum kapatma / oturum açma olmadan almak için yapabilirsiniz ... ancak bu sadece kendi oturumunuzu ve oturumunuzda çalışan yeni işlemleri etkileyecektir.

Not hiçbir değişken yorumlanır olmadığını da /etc/environment(bu bir senaryo değildir) Eğer böyle şeyler yapamaz böylece PATH="$PATH:/my/custom/path"orada.

Not Ayrıca /etc/profileve /etc/profile.d/*.sh(bir arka plan programı işlemi için bu giriş kabuğunun dışında çalışır bir çevre değişkeni ayarlamak çalışıyorsanız yani) sadece giriş oturumları için çalıştırılır ve çevre yapılandırılmış, böylece sistem dışı giriş hesaplarının mevcut olmayacaktır.

Bununbashrc tüm oturum açma kabuğunun ortamını ayarlamak için değil, bash kabukları ve alt işlemler için yararlı olduğunu unutmayın ... bu nedenle gerçek "global" veya "global kullanıcı" için ortam yapılandırmanızı büyük olasılıkla /etc/profileveya /etc/profile.d/my-custom-env.shveya olarak koymak istersiniz ~/.profile. Diğer kabukların (örn. Zsh) kendi yapılandırma dosyaları vardır, bu nedenle bir bashrc'deki bash'a özgü olmayan ortam yapılandırması, kabukları değiştirdiğinizde / değiştirdiğinizde (veya sistemde farklı kabuklar kullanan diğer kullanıcıların varsa) sorunlara veya karışıklığa neden olur.

Yeni bir program yüklemek yaygın bir sorundur ve düzgün çalışması için bir ortam belirtmeniz gerekir. Global ortam bir cevaptır, ancak çoğu zaman sunucular için ideal olmayan bir yeniden başlatma gerektirir ve kullanım durumlarını otomatik olarak sağlama / yapılandırma. Bunun, sistemdeki tüm kullanıcıların ve programların gerçekten ihtiyaç duyduğu bir değişken olup olmadığını veya gerçekten belirli bir kullanıcı veya program için kullanılabilir hale getirmeniz gereken bir şey olup olmadığını kendinize sormalısınız.

Belirli bir kullanıcı için

~/.profile ~/.bashrcetkileşimli, giriş kabukları, yalnızca bash, vb. için bunu isteyip istemediğinize bağlı olarak kullanıcının ana dizinindeki ortama veya bashrc'ye (ör .

Bunun, ortam değişikliklerinin kullanıcının oturumundaki tüm işlemler için kullanılabilmesi için yeniden başlatma veya oturum kapatma / oturum açma işlemi gerektirdiğini unutmayın. Kullanıcı yapabilir source ~/.profile... ancak bu bir terminal içinde yapılır ve yalnızca o terminal oturumu ve alt süreçleri içindeki ortamı güncelleştirir ... kullanıcının tüm giriş ortamı için olması gerekmez.

Belirli bir program için birkaç seçenek vardır.

Birincisi, komutu çalıştırırken sadece ortamı sağlamaktır:

VAR_NAME="VAR VALUE" VAR2_NAME="VAR2_VALUE" /path/to/program --opt1 --op2

Ayrıca altında birim / servis dosyasında çevreyi belirtebilirsiniz size systemd kullanıyorsanız [Service]ileEnvironment=VAR_NAME="VAR VALUE" VAR2_NAME="VAR2_VALUE

Bu seçenek, her program çalıştırdığınızda ortamı belirtmeniz gerektiği için tıknaz olabilir, ancak ortama gerçekten sadece bu program tarafından ihtiyaç duyuluyorsa ... bu gerçekten en iyi yoldur ve buna alışmanız ve her şeyi dökmemeniz gerekir bir bashrc veya profil dosyasına.

Ortam kurmak için systemd veya init kullanmıyorsanız ve programı çalıştırıyorsanız ... elbette program yürütmesini, kolaylık sağlamak için ortam kurulumu da dahil olmak üzere tam komutu kaydettiğiniz bir bash betiği ile sarın.

Referanslar:

Burada okumanızı önerdiğim çok ayrıntılı bir cevap da var: /ubuntu//a/247769/824160


3

altında özel bir kabuk betiği oluştur

/etc/profile.d/

oluşturduğunuz betiğin içine global ortam değişkenlerinizi ekleyin, makineyi yeniden başlatın, ardından herkes tarafından kullanılabilir.


Bunun / etc / environment dosyasını düzenlemekten daha güvenilir bir yaklaşım olduğuna inanıyorum, çünkü paketler güncellendiğinde bu dosya değiştirilebilir.
phreed

2

Değişken eklemek /etc/environmentbenim için işe yaradı.

Ancak/etc/environment değişikliğin yürürlüğe girmesi için değiştirdikten sonra yeniden başlatmam gerekiyordu. Sadece terminal penceresinin kapatılması ve tekrar açılması yeterli değildi.


3
Her zaman source /etc/environmentyeniden yüklemek için bir yapabilirsiniz.
Panthro

Oturumu kapatıp tekrar açmak yeterli olmalıdır.
Karuhanga
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.