/ Etc / environment dizinindeki PATH değişkenini, .profile ile ayarlama


58

PATHEnvvar ayarlamak için tercih edilen yer neresidir?

~/.profileya /etc/environment?

PATHHer iki yerde de ayarlandığı zaman durum nedir ? Son sonuç, bu iki yerde ayarlanan her iki değerin bir birleşimi midir?


Elbette, PATH'ye en son görev hükmetti. Çoğu komut dosyası, komut dosyasının başlangıcında açıkça belirler.
AlexP,

Yanıtlar:


69

Özet:

  • Değişkeninize yalnızca geçerli kullanıcı için değil, bilgisayarınızın tüm kullanıcıları için bir yol (örn. /your/additional/path) Eklemek istiyorsanız PATH, normal ~/.profileolarak bu iki örnekten birinde benzerinin sonuna koyarsınız :

    PATH="/your/additional/path:$PATH"
    PATH="$PATH:/your/additional/path"
    

    Yol öncelikleri soldan sağa doğru iniyor, bu nedenle ilk yol en yüksek önceliğe sahip. Yolunuzu soluna eklerseniz $PATH, en yüksek önceliğe sahip olur ve bu konumdaki yürütülebilir dosyalar diğerlerini geçersiz kılar. Yolunuzu sağa eklerseniz, en düşük önceliğe sahip olacak ve diğer konumlardan çalıştırılabilirler tercih edilecektir.

  • Ancak, bu ortam değişkenini tüm kullanıcılar için ayarlamanız gerekirse, yine de dokunmayı /etc/environmentdeğil, .shiçinde biten bir dosya adı olan bir dosya oluşturmanızı tavsiye ederim /etc/profile.d/. /etc/profileSenaryo ve tüm komut /etc/profile.dher kullanıcının kişisel küresel eşdeğerdir ~/.profileve bunların başlatma sırasında tüm kabukları tarafından düzenli kabuk komut olarak yürütülür.


Daha fazla detay:

  • /etc/environmentsistem genelinde bir yapılandırma dosyasıdır, yani tüm kullanıcılar tarafından kullanılır. Ancak, sahibi rootbir yönetici kullanıcı olmanız ve sudodeğiştirmek için kullanmanız gerekir.

  • ~/.profilekendi kullanıcının kişisel kabuk başlatma komut dosyalarından biridir. Her kullanıcı bir taneye sahiptir ve başkalarını etkilemeden dosyalarını düzenleyebilir.

  • /etc/profileve her kullanıcı için /etc/profile.d/*.sheşdeğer olan genel başlatma komut dosyalarıdır ~/.profile. Genel komut dosyaları, kullanıcıya özel komut dosyalarından önce çalıştırılır; ve ana, /etc/profiletüm *.shkomut dosyalarını /etc/profile.d/çıkmadan hemen önce çalıştırır .


  • /etc/environmentDosya normalde sadece bu satırı içerir:

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    

    PATHSistemdeki tüm kullanıcılar için değişkeni, büyük bir şekilde değiştirilmemesi gereken bu varsayılan değere ayarlar . En azından gibi önemli yolların herhangi kaldırmak olmamalı /bin, /sbin, /usr/binve /usr/sbinondan.

    Bu dosya, her kullanıcının her kabuğu tarafından ilk yapılandırma dosyalarından biri olarak okunur. Bunun bir kabuk betiği olmadığını unutmayın . Sadece bir şekilde ayrıştırılan ve yalnızca ortam değişkeni atamaları içerebilen bir yapılandırma dosyasıdır!

  • ~/.profileDosya bir olsun diğer şeyler arasında bir çek içeren varsayılan olarak, birçok şeyi içerebilir ~/bindizini mevcut ve kullanıcının mevcut bu ekler PATH(Ubuntu 16.04 öncesinde serbest bırakır yaşlı üzerinde - yeni bültenleri koşulsuz ekleyin) bu gibi değişken:

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    

    PATHBurada eski değerinin yeniden kullanıldığını ve yeni yolun her şeyin üzerine yazmak yerine yalnızca başlangıcına eklendiğini görüyorsunuz . Manuel olarak yeni yollar eklemek istediğinizde, eski $PATHdeğeri her zaman yeni dizede bir yerde tutmalısınız .

    Bu başlatma betiği yalnızca ait olduğu kullanıcının kabukları tarafından okunur, ancak başka bir koşul vardır:

    # ~/.profile: executed by the command interpreter for login shells.
    # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
    # exists.
    

    Bu nedenle, varsayılan Bash kabuğunu kullanıyorsanız, sahip olmadığınızdan ~/.bash_profileveya ~/.bash_logindeğişikliklerin ~/.profilekullanıcı için bir etkisi olmasını istediğinizden emin olmalısınız .


Çevre Değişkenlerini tam olarak anlamak için bkz: https://help.ubuntu.com/community/EnvironmentVariables


İlgili soru: bash.bashrc ve / etc / environment dosyası arasındaki fark


2
Günümüzde ~/.profilevarlığını kontrol etmiyor ~/bin, ama sadece şu çizgiye sahip:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Gunnar Hjalmarsson

1
@GunnarHjalmarsson Lütfen "bugünlerde" tanımlayın? 16.04'ü çalıştırıyorum ve orada böyle görünüyor.
Byte Commander

2
/etc/skel/.profile16.04'te bahsettiğim çizgi var. Görünüşe göre kullanıcınızı önceki bir sürümde yarattınız.
Gunnar Hjalmarsson,

1
@GunnarHjalmarsson Bilgi için teşekkürler - yaklaşık beş dakika öncesine kadar , varsayılanın da buna sahip olduğunu düşündüm ~/.profile, ama haklısınız - /etc/skel/.profileyükseltilmiş 16.04 sistemimde (ve 16.04'ü yüklerken oluşturulmuş bir kullanıcı hesabı) yok başka bir makine onların içinde yok .profile).
Eliah Kagan

2
“... başlatma sırasında tüm mermiler tarafından normal kabuk betiği olarak çalıştırıldı.” Bunun yanıltıcı olduğunu düşünüyorum. Girişimci olmayan bir terminal kabuğunu GUI masaüstünden açmanın, / etc / profile komutunun yürütülmeyeceğini (bazılarına) önerebiliriz. askubuntu.com/questions/155865/…
Hawkeye Parker

22

Bu cevap esas olarak , farklı yapılandırma dosyalarında belirtildiğinde, ortam değişkenleri gibi PATHatanan sıra ile ilgilidir . Bunları genellikle nerede ayarlayacağınızı da kapsarım, ancak aşağıdaki liste dosyaları kullanmayı düşünmeniz gereken sırayla listelemez. PATHUbuntu'da ayar ve diğer ortam değişkenleri hakkında genel bilgi için , EnvironmentVariables ve bu soruya verilen diğer cevapları da okumanızı tavsiye ederim .

Ayarlanacak tercih edilen yer PATH, hangi kullanıcıları ayarlamanız gerektiğine ve ne zaman ve nasıl ayarlanmasını istediğinize bağlıdır. Kararınızın bir kısmı, tüm kullanıcılar için mi yoksa her kullanıcı için mi ayarlanmış bir ortam değişkeni istediğinizi isteyecektir. Emin değilseniz, sistem genelinde değil, yalnızca bir kullanıcı (ör. Hesabınız) için ayarlamanızı öneririm.

As AlexP diyor , PATHortam değişkeni o değer olacaktır En son atanan . Uygulamada, çoğu ayarladığınız zaman PATH, eklemek eski değerini PATHönceki girişler kalır, böylece yeni bir değer.

Bu nedenle, pratikte, PATHbirden fazla dosyadan ayarlandığında, genellikle tüm dosyalarda verilen girişleri içerir. Ancak bu yalnızca, onu ayarlayan tüm dosyalar, ilk dışında, genellikle PATHdeğişkenin kendisine referans vererek eski değerinin yenisine eklenmesine neden olması nedeniyle gerçekleşir.

Bu nedenle, PATHçeşitli dosyalardaki ayarların geçerli olacağı sırayı soruyorsunuz .

Ayarlanacak genel, genel amaçlı yerler PATH, bir kullanıcı oturum açtığında, genellikle kullanmayı düşünmeniz gereken sırayla değil , geçerli oldukları sıraya göre aşağıda listelenmiştir . Aşağıda listelenen yerlerin her biri, bazı durumlarda ayar PATH yapmak için makul bir seçimdir , ancak yalnızca birkaçı çoğu zaman iyi seçimlerdir.

Aşağıdaki listede, gibi bazı dizin isimleri göreceksiniz ~/.profile. Eğer bilginiz durumda yaklaşık yorumlaması genişleme , ~/cari kullanıcının ev dizini ifade eder. Genel olarak bu sözdizimini kompaktlık için kullanıyorum. Bu ancak, kabuk komut dosyalarında desteklenir değil PAM yapılandırma dosyalarında.

1. Tüm kullanıcılar için: /etc/environment

Ubuntu'daki PAM , listelenen ortam değişkenlerinin /etc/environment, eğer varsa, varsayılan olarak yaptığı gibi ayarlanmasına neden olur . Tüm kullanıcılar için ortam değişkenleri en yaygın şekilde ayarlanır.

$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Yalnızca kullanıcı hesabınız yerine tüm kullanıcı hesapları için ortam değişkenleri ayarlamanız gerekiyorsa , bu dosyayı değiştirmek muhtemelen en iyi seçimdir. Önce yedeklemenizi öneririm. Bu dosyayı yedeklemek için bir yol çalıştırmaktır:

sudo cp /etc/environment /etc/environment.orig

.origEğer kafa karıştırıcı ya da zaten kullanılıyor değil yedekleme dosyası şey adlandırma hakkında iyi hissedebilirsiniz - uzantının özellikle gerekli değildir. (Bunun yanı sıra .orig, .old, .backupve .bakyaygındır.)

Sen (Kök kullanıcı olarak herhangi bir başka dosyayı düzenlemek olabilecek yollardan herhangi bu dosyayı düzenleyebilirsiniz sudoedit /etc/enviromnment, sudo nano -w /etc/environment, gksudo gedit /etc/environmentvs.)

/etc/environmentotomatik olarak bir değişkenin eski değerinin dahil edilmesini desteklemez. Ancak bu genellikle gereksizdir, çünkü tüm kullanıcılar için bir ortam değişkenini düzenleyerek ayarlayacağınız /etc/environmentzaman, kullanıcı yine de oturum açtığında bunun başlangıç ​​değeri olmasını istersiniz. Kullanıcı daha sonra istediği gibi değiştirebilir. Genellikle kullanıcıların bunu yapabilmesi iyi olur.

2. Tüm kullanıcılar için: /etc/security/pam_env.conf

PAM /etc/security/pam_env.conf, kullanıcı başına ~/.pam_environmentdosyalarda kullanılanla aynı sözdizimiyle belirtilen tüm kullanıcılar için ortam değişkenlerini okur (aşağıya bakın).

Aynı ortam değişkeni her ikisinde de ayarlandığında /etc/environmentve /etc/security/pam_env.confiçindeki değer pam_env.confkullanılır - bu değer DEFAULTyerine belirtilmiş olsa bile OVERRIDE.

Eğer bir çizgi yerini Ancak, environmentiçinde biri ile pam_env.conf, sen yerini değerin içeriğini içerebilir. Ayrıntılar için aşağıdaki bölüme bakın .pam_environment(aynı sözdizimini kullandığından).

Bu düzenlemek için genellikle gerekli değildir pam_env.confve sen bunu yaparsanız çok dikkatli olmalı , bir yana hatalı biçimlendirilmiş genellikle hiç giriş yapmalarını tüm normal kullanıcı hesaplarını önleyecektir hattı! Örneğin, varsayılan pam_env.confsatırları içerir:

#PATH           DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
#:/usr/bin:/usr/local/bin/X11:/usr/bin/X11

Bu birkaç örnekten biri olarak sunulmaktadır. Gösterdiği şeylerden biri, bir ödevi birden çok satıra nasıl böleceğinizdir \. Diyelim ki sadece ilk satırdakileri uncomment edecektiniz, ancak ikinci satırdakileri de unuttunuz:

PATH           DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
#:/usr/bin:/usr/local/bin/X11:/usr/bin/X11

Bunu yapma!

Ben sadece kendimi tesadüfen test ettim ve kullanıcıların giriş yapmasını engelledim. Düzeltmek için kurtarma modunda önyükleme yapıp tekrar değiştirmek zorunda kaldım. (Neyse ki bunu sadece test etmek için kullandığım sanal bir makinede yaptım, bu yüzden herhangi bir sıkıntıya neden olmadı.)

3. Bir kullanıcı için: .pam_environmentkullanıcının giriş dizininde

Tek bir kullanıcı için bir ortam değişkeni ayarlama yollarından biri, o kullanıcının .pam_environmentana dizininde düzenleme yapması (veya oluşturması) . Bu dosyada ayarlanan değerler genel /etc/environmentdosyada ayarlananların yerine geçer .

.pam_environmentKullanıcı hesabı başlangıçta oluşturulduğunda, kullanıcının ana klasörüne kopyalanan dosya iskeletinin bir parçası değildir. Ancak, bu dosyayı giriş dizininizde oluşturursanız, ortam değişkenlerini ayarlamak için kullanabilirsiniz PATH. Aksine /etc/environment(ancak benzeri /etc/security/pam_env.conf), kullanıcı başına .pam_environmentdosyalar, bir ortam değişkeninin eski değerini yenisine genişletmeyi destekler. Bununla birlikte, bunlar kabuk komut dosyaları değildir ve bunu elde etmek için özel bir sözdizimi kullanmanız gerekir; bu, bir dosyada kullanacağınız sözdiziminden biraz farklıdır .profile.

Örneğin, bin2ana dizininizin sonuna eklemek istediğiniz bir dizini varsa PATH, bu satırı ekleyerek bunu yapabilirsiniz .pam_environment:

PATH DEFAULT=${PATH}:/home/@{PAM_USER}/bin2

Bkz alt bölümüne ait EnvironmentVariables (Yukarıdaki örnek yakından adapte edildiği), ve daha fazla ayrıntı için.~/.pam_environmentman pam_envman pam_env.conf

Bu, bir zamanlar Ubuntu kullanıcılarının çevre değişkenlerini değiştirmesi veya eklemesi için tercih edilen bir yol olduğu ve yine de makul ve kabul edilebilir bir seçenek olduğu düşünülse de, düzenleme yaparken dikkatli olmalısınız.pam_environment . Sistem genelindeki düzenlemeler gibi /etc/security/pam_env.conf(yukarıya bakın), bir kullanıcı .pam_environmentdosyasındaki hatalı biçimlendirilmiş bir satır, girişlerin başarılı olmasını önler. (Bu test ettik -. Bilerek bu sefer) hakkında bilgi için tavsiyeler var gelişti , bkz Gunnar Hjalmarsson 'ın yorumları aşağıda ve bu ubuntu-develtartışma .

Böyle bir hata genel olarak hatalı biçimlendirilmiş bir çizgiden çok daha az ciddidir pam_env.conf, çünkü yalnızca bir kullanıcıyı etkiler. Ancak, oturum açma işlemine izin veren yalnızca bir kullanıcı hesabına sahip bir masaüstü Ubuntu sistemi söz konusu olduğunda, düzenleme sırasında yapılan bir hata, bir hata düzenleme .pam_environmentkadar kötü olacaktır pam_env.conf- daha önce giriş yapmamışsanız, yapamazsınız. Kurtarma modunda önyükleme yapmadan düzeltmek için (veya canlı bir USB'den vb.).

(Başka kullanıcı hesabınız varsa, başka bir kullanıcı olarak giriş yapabilir ve sorunu çözebilirsiniz. Yönetici olmasalar ve sudoroot yapamazlarsa bile, hala çalışabilir ve şifrenizi girmeniz istenebilir . konuk o kullanması yasaktır gibi hesap Ancak, bunu yapamaz başka bir kullanıcının kimliğini almak.)su your-accountsu

4. Tüm kullanıcılar için: /etc/profileve içindeki dosyalar/etc/profile.d/

Bourne uyumlu kabuklar ( bashUbuntu'daki varsayılan kullanıcı kabuğu dahil) , /etc/profilebir giriş kabuğu olarak çağrıldığında komutları çalıştırır .

Ubuntu /etc/profile.dsona erdi:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Bu, /etc/profile.d/dizinin adında biten herhangi bir dosyadaki komutların .shda çalıştırılmasını sağlar.

Çoğu ekran yöneticisi, içerisindeki komutların /etc/profile(ve böylece dosyaların /etc/profile.d) grafik oturumlar için de çalıştırılmasına neden olur. Bununla birlikte, herkes bunu yapmaz ve bu, PAM tarafından sağlanan tesisleri kullanmak yerine lehine kayda değer bir argümandır (yukarıya bakın) - bu sisteme hiçbir grafiksel giriş yapılmazsa, örneğin, durum böyle olabilir. GUI kurulu olmayan bir sunucu.

Sistem genelinde çevre değişkenlerini ayarlamak geleneksel bir /etc/profiledurumdur, ancak bu artık en iyi seçenek değildir. Bir ortam değişkenini /etc/environmentayarlayamazsanız ve bunu tüm kullanıcılar için ayarlamanız gerekiyorsa, yeni bir dosya oluşturmak, kendisini /etc/profile.d/düzenlemek yerine büyük olasılıkla daha iyidir /etc/profile. Bunun bir nedeni, Ubuntu yükseltildiğinde, yeni bir varsayılan /etc/profiledosya olabilir. Güncellemeyi nasıl yaptığınıza bağlı olarak, eski dosya (değişikliklerinizle birlikte), belirli bir güncellenmiş konfigürasyon dosyasından önce tutulur veya durumu ele almanız istenir.

Aynı ortam değişkeni hem içinde hem de /etc/profilebir veya daha fazla dosyada ayarlandığında, /etc/profile.den son hangisi yapılır? Bu, bu komuttaki komutların /etc/profile, dosyaların alınmasından önce mi sonra mı geldiğine profile.d(yukarıda alıntı yaptığım kodla) bağlıdır. Komutlar /etc/profilegöründükleri sıraya göre yürütülür.

/etc/profilebir kabuk betiğidir ve sözdizimi yukarıda tartışılan PAM yapılandırma dosyalarıyla aynı değildir . Sözdizimi, kullanıcı başına ~/.profiledosya için sözdizimi ile aynıdır (aşağıya bakınız).

Belirli bir dizini ekleyip eklememeye karar veren bir kod yazmanız gerekiyorsa PATH(ve tüm kullanıcılar için bunu yaparsanız), bunu kullanamaz /etc/environmentveya /etc/security/pam_env.confyapamazsınız. Bu belki de kullanmanın daha iyi olduğu /etc/profileya da /etc/profile.d/onun yerine ana durumdur .

5. Bir kullanıcı için: .bash_profilekullanıcının giriş dizininde

Bir kullanıcı varsa ~/.bash_profile, bash yerine ~/.profileveya kullanır ~/.bash_login(aşağıya bakınız). Genelde .bash_profileev dizininizde bir tane olmamalıdır .

Bunu yaparsanız, genellikle kaynak için bir komut içermesi gerekir ~/.profile(örn . "$HOME/.profile".). Aksi takdirde, kullanıcı başına .profiledosyanın içeriği hiç çalışmaz.

6. Bir kullanıcı için: .bash_loginkullanıcının giriş dizininde

Eğer bir kullanıcı varsa ~/.bash_login, bash yerine bash kullanır ~/.profile(aşağıya bakınız), ~/.bash_profilemevcut değilse , bu durumda hiçbiri `/ / .bash_login'dan kaynaklanmadıkça kullanılmayacaktır.

Olduğu gibi .bash_profile, genellikle .bash_loginev dizininizde bir dosya olmamalıdır .

7. Bir kullanıcı için: .profilekullanıcının ana dizininde.

Bir Bourne stili kabuk bir giriş kabuğu olarak çalıştırıldığında, komutları çalıştırır /etc/profile(genellikle dosyalardaki komutların çalışmasına neden olan komutları içerir /etc/profile.d/- yukarıya bakın). Bundan sonra .profile, kullanıcının giriş dizinindeki komutları çalıştırır . Bu dosya her kullanıcı için ayrıdır. (Bash aslında ishal .bash_profileveya .bash_loginonlar var yerine eğer -. Bir Ubuntu sisteminde kullanıcılar için, ancak, bu dosyalar nadiren veya mevcut yapmalıyım Ayrıntılar için yukarıya bakınız ve 6.2 Bash Başlatma Dosyalar içinde Bash kılavuzuna .)

~/.profileBu nedenle, kullanıcının oturum açtığında çalışan komutları vermesi için ana yerdir. Ayarlamanız için geleneksel bir yer PATHancak Ubuntu pam_env modülüne ve desteklerine sahip olduğundan ~/.pam_environment, onu kullanmayı düşünmelisiniz.

Olduğu gibi /etc/profile, tüm ekran yöneticileri bu dosyayı grafiksel girişler için çalıştırmaz, ancak çoğu yapar. Bu, ~/.pam_environmentortam değişkenlerini ayarlamayı tercih etmenin bir nedenidir (birinin tercih edebileceği /etc/environmentkadar /etc/profile).

Aşağıdakiler de dahil, çevre değişkenleri genişletebilirsiniz PATHayarladığınız zaman, kendisini PATHde .pam_environment(yukarıya bakınız). Bununla birlikte, PATHdaha sofistike bir şekilde ayarlama yapmanız gerekirse , .profilebunun yerine kullanmak zorunda kalabilirsiniz . Özellikle, bir kullanıcı her oturum açtığında bir dizinin var olup olmadığını kontrol etmek ve yalnızca eklenmişse onu eklemek PATHistiyorsanız, .pam_environmento dizini eklemek için dosyanızı kullanamazsınız PATH.

Örneğin, .profileUbuntu’daki varsayılan kullanıcı başına dosya şu şekilde kullanılır :

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Bkz Gunnar Hjalmarsson 'ın yorumunu üzerinde Byte Komutanın cevabı detayları için.

Bu bin, ana dizininizin bir alt dizini olup olmadığını kontrol eder . Eğer öyleyse, bu alt dizininizi başına ekler PATH.

Bu liste bazı olasılıkları göz ardı ediyor.

Kullanıcılar oturum açtığında ortam değişkenlerinin, giriş türüne daha çok bağlı olarak ayarlanmasının başka yolları da vardır. Örneğin, bazen yalnızca grafiksel girişler için veya yalnızca SSH tabanlı uzaktan girişler için ayarlanan ortam değişkenlerine sahip olabilirsiniz. Yukarıdaki liste bu davaları kapsamamaktadır.

İnsanların bazen ortam değişkenlerini tanımladıkları birkaç dosya bıraktım, ~/.bashrcve gibi /etc/bash.bashrc, çünkü genellikle ayarlanması önerilen yerler olmadığından PATHve bunları gerçekten bu amaç için kullanmanız nadirdir. Bu dosyaları dizin eklemek için kullanırsanız PATH, o zaman bazen birçok kez eklenir ve incelendiğinde çok kafa karıştırıcı olur $PATH. (Aşırı durumlarda, bu işleri yavaşlatabilir, ancak genellikle sadece her şeyi temiz ve anlaşılabilir tutma meselesidir.)

Yana bashkullanıcılar için Ubuntu'nun varsayılan giriş kabuğu ve çoğu kullanıcı gibi diğer non-Bourne tarzı kabukları nasıl ayarlandığını ortam değişkenleri hakkında o ya da diğer bazı POSIX uyumlu kabuk, ben atlanmış bilgileri kullanacağız tcsh.


1
[Yorum # 2/1] Bu kapsamlı açıklama için teşekkürler! (Küçük bir düzenleme yaptım.) Bununla birlikte, önerilen yöntem (ler) ile ilgili şüphelerim var. Birkaç yıl önce EnvironmentVariables bahsedildiği /etc/environment/ ~/.pam_environmentolarak tavsiye edilen dosyalar. Geliştiricilere danıştıktan sonra PAM ve / arasında nötr olacak şekilde değiştirdim ve hala bu şekilde bakma eğilimindeyim. /etc/profile.d/*.sh~/.profile
Gunnar

1
[comment # 2/2] PAM lehine birkaç tartışmadan bahsettin. /etc/profile.d/*.sh/ Lehine yapılan önemli argümanlar ~/.profile, sözdiziminin daha basit ve hata durumunda lightdm / gdm'nin affedilmiş olmasıdır (sözdizimi hataları bile oturum açmanızı engellemez, sadece uyarı mesajlarına neden olur).
Gunnar Hjalmarsson,

Ne zaman demek pam_env.soistedin pam_env.conf?
Johan Boulé

@ JohanBoulé Evet, demek istedim pam_env.conf. Teşekkürler! Düzeltmek için düzenleme yaptım.
Eliah Kagan

3

/ etc / environment dosyası, orada dışa aktarmayı kullanamayacağınız bir komut dosyası değildir ve $ HOME türündeki değişken genişletmeyi desteklemez, sadece simplevariable = değer çiftleri. Bu nedenle, bu dosyayı kullanmak için, yolunuzu mevcut tanımlamaya eklemeniz gerekir, özellikle de sistem genelindeki ortam değişkeni ayarları içindir. Her satıra bir tane. Özellikle, bu dosya sistem genelindeki yerel ayarları ve yol ayarlarını saklar.

~ / .profile - Bu dosya ne zaman bir bash kabuğu çalıştırılırsa çalıştırılır, genellikle çevre değişkenleri için önerilen dosyadır, ancak yalnızca oturum açma kabukları tarafından çağrılmanın dezavantajı vardır, bu nedenle etkinleşmesi için ihtiyacınız olacak oturumu kapatıp tekrar açmak için - veya en azından yeni bir giriş kabuğu başlatın.


1

Çevresel değişkenleri ayarlamak için tercih edilen yer birkaç şeye bağlıdır:

  1. Bilgisayarı kullanan sadece siz misiniz:
    • Bu durumda, ayarlamak için en iyi yer /etc/environment, yetkisiz erişim tehlikesi olmadığı için olacaktır .
  2. Sistem birçok kişi tarafından kullanılıyorsa
    • Eğer değişkenler herkes tarafından erişilebilir olmalıdır sonra konum olurdu /etc/environment, ancak
    • eğer bireysel kullanıcıların bunlara erişim seçmiş olmalıdır sonra her onların belirlesin~/.profile her kullanıcıların ev dizininde bulunan bu yana sistemin her bir kullanıcıya ait.

Sistem okumadan /etc/environmentönce okuyacak ~/.profile. Hiçbir birleştirme oluşur ve benzeri Alex P söylediği son atama yoluna hakimdir.

Bu tür diğer konumlarla nasıl ~/.profileve /etc/environmentoynamayı belirleyen faktörlere daha ayrıntılı bir göz atmak için, buraya ve buraya gidin , çünkü bu faktörler bu yerleri kullanma şeklinizi etkileyecektir.

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.