Yanıtlar:
/etc/environment
Gü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/environment
istiyorsanı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.
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 su
gözlemlediğiniz gibi arayarak veya oturumu kapatıp tekrar açarak veya yeniden başlatarak olabilir. Yapabilirsin su
kö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.
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/*.sh
ve /etc/environment
alı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/profile
ve /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/profile
veya /etc/profile.d/my-custom-env.sh
veya 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.
~/.profile
~/.bashrc
etkileş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.
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.
Burada okumanızı önerdiğim çok ayrıntılı bir cevap da var: /ubuntu//a/247769/824160
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.
Değişken eklemek /etc/environment
benim 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.
source /etc/environment
yeniden yüklemek için bir yapabilirsiniz.