Tüm kullanıcılarım için evrensel olan belirli ayarlara sahip olabilir miyim?
Tüm kullanıcılarım için evrensel olan belirli ayarlara sahip olabilir miyim?
Yanıtlar:
Sıra itibariyle /etc/profile
hangi diğerleri de söylediğim, bazı Linux sistemleri artık bir dizin kullanmak /etc/profile.d/
; .sh
oradaki herhangi bir dosyanın kaynağı olacaktır /etc/profile
. Özel ortam öğelerinizi bu dosyalarda tutmak, düzenlemekten biraz daha derli topludur /etc/profile
.
LinuxOS'unuzda bu dosya varsa:
/etc/environment
Tüm kullanıcılar için çevresel değişkenleri kalıcı olarak ayarlamak için kullanabilirsiniz.
Alıntıdır: http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html
Tüm oturum açma hizmetleri PAM kullanıyorsa ve tüm oturum açma hizmetlerinin session required pam_env.so
kendi /etc/pam.d/*
yapılandırma dosyalarında varsa, tüm oturum açma oturumlarının pam_env
yapılandırma dosyasında belirtildiği gibi ayarlanan bazı ortam değişkenleri olacaktır .
Çoğu modern Linux dağıtımında, hepsi varsayılan olarak oradadır - sadece istediğiniz global ortam değişkenlerini ekleyin /etc/security/pam_env.conf
.
Bu, kullanıcının kabuğundan bağımsız olarak çalışır ve grafiksel oturum açma işlemleri için de çalışır (xdm / kdm / gdm / entry /… bu şekilde ayarlanmışsa).
echo foo>/home/me/bar
ve yeniden başlatırsam (ve tekrar oturum açarsam) bu dosya oluşturulmaz. (Bunu test etmenin muhtemelen daha zarif bir yolu vardır, ancak burada yorum yapmadan önce emin olmak istedim.)
Şaşırtıcı bir şekilde, Unix ve Linux'un aslında küresel ortam değişkenlerini belirleyecek bir yeri yoktur. Yapabileceğiniz en iyi şey, herhangi bir belirli kabuğun siteye özgü bir başlatmaya sahip olmasını sağlamaktır.
Eğer yerleştirirseniz /etc/profile
, çoğu posix uyumlu kabuk kullanıcısı için işleri halledecektir. Bu, kritik olmayan amaçlar için muhtemelen "yeterince iyidir".
Ama csh
veya tcsh
kabuğuna sahip olan hiç kimse onu görmeyecek ve csh
küresel bir başlatma dosyası olduğuna da inanmıyorum .
/etc/environment
Aslında, kök kullanıcı olarak bile benim için ortam değişkenlerini ayarlıyor gibi görünüyor. Bunun /etc/environment
amazon linux ve ubuntu'da olduğunu biliyorum . Csh, tcsh veya zsh için çalışıp çalışmadığını kontrol edemedim.
Bash man sayfasından bazı ilginç alıntılar:
Bash, etkileşimli bir oturum açma kabuğu olarak veya
--login
seçenekle etkileşimli olmayan bir kabuk olarak çağrıldığında , önce/etc/profile
o dosya varsa dosyadan komutları okur ve çalıştırır . Bu dosyayı okuduktan sonra, arar~/.bash_profile
,~/.bash_login
ve~/.profile
, bu sırayla ve okur ve var ve okunabilir olanlarını gelen yürütür komutları.--noprofile
Kabuk bu davranışı engellemek için başlatıldığında seçenek kullanılan olabilir.
...
Oturum açma kabuğu olmayan bir etkileşimli kabuk başlatıldığında, bash,/etc/bash.bashrc
ve~/.bashrc
bu dosyalar mevcutsa komutlarını okur ve yürütür . Bu--norc
seçenek kullanılarak engellenebilir .--rcfile
Dosya seçeneği okuyup yerine dosyadan komutları yürütmek için bash zorlar/etc/bash.bashrc
ve~/.bashrc
.
Öyleyse bir göz atın /etc/profile
veya /etc/bash.bashrc
bu dosyalar genel ayarlar için doğru yerlerdir. Bir çevre değişkeni oluşturmak için bunlara şöyle bir şey koyun:
export MY_VAR=xxx
PAM kullanmak mükemmeldir.
# modify the display PAM
$ cat /etc/security/pam_env.conf
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py &
# AFTER : $ python $abc/click.py &
DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
abc DEFAULT=/var/tmp/myproject
Linux çekirdeği altında çalışan her işlem, üstünden devraldığı kendi benzersiz ortamını alır. Bu durumda, üst öğe ya bir kabuğun kendisi (bir alt kabuk üreten) ya da 'oturum açma' programı (tipik bir sistemde) olacaktır.
Her işlemin ortamı korunduğundan, çalışan her işleme bir çevresel değişken 'enjekte etmenin' bir yolu yoktur, bu nedenle varsayılan kabuk .rc / profilini değiştirseniz bile, her işlem çıkıp yeniden yüklenene kadar bu etki etkin olmayacaktır. başlangıç ayarları.
Herhangi bir belirli kabuğun varsayılan başlangıç değişkenlerini değiştirmek için / etc / içine bakın. Kullanıcıların onları kendi kişisel ayarlarında değiştirebileceğini (ve sıklıkla değiştirebileceğini) unutmayın.
Unix, sınırlar dahilinde kullanıcıya itaat edecek şekilde tasarlanmıştır.
Not : Bash, sisteminizdeki tek kabuk değil . / Bin / sh sembolik bağlantısının gerçekte neye işaret ettiğine dikkat edin. Çoğu sistemde, bu aslında (varsayılan olarak, özel bir çağrı olmaksızın) POSIXLY doğru olan tire olabilir . Bu nedenle, her iki varsayılanı da değiştirmeye dikkat etmelisiniz , aksi takdirde / bin / sh ile başlayan komut dosyaları genel varsayılanlarınızı devralmayacaktır. Benzer şekilde, yalnızca bash'ın her ikisini de düzenlerken anlayacağı sözdiziminden kaçının , yani avoiding bashisms
.