Sistem genelinde $ PATH değişkeni nerede ayarlanır?


10

Ubuntu Desktop 14.04 kullanıyorum ve bu nedenle, oturum açma olmayan kabuğu kullanıyorum. GUI terminalini açtığımda, önce oturum açma olmayan kabuk oturumları aşağıdaki başlangıç ​​dosyalarını okur:

/etc/bash.bashrc
~/.bashrc

Giriş yapmayan kabuklar, ortamı bir giriş kabuğu olan üst işlemden devralır, böylece oturum aşağıdaki başlangıç ​​dosyalarını da okur:

/etc/profile
~/.bash_profile

Ancak, ben bulamıyorum $PATHsistem genelinde yollar gibi için /bin, /sbin, /usr/bin, /usr/sbin, bu dosyaların herhangi ayarlanır. $PATHBu dizinler için set nerede ?

Yanıtlar:


16

Dosyada (varsayılan) sistem çapında PATHayarlanır /etc/environment.

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

Temelde küresel ortam değişkenlerini kaydetmek için bir yerdir.


+1, ancak $PATHüst giriş kabuğu tarafından miras alınıp alınmadığını veya her bashörnek tarafından yeniden yüklenip yüklenmediğini biliyor musunuz?
kos

@kos Elbette değiştirilmiş bir ortamda çalıştırılmadığı sürece tüm çocuk süreçleri çevreyi ana kabuktan devralır ..
heemayl

Kabuğun $HOMEdeğişkeni genişletmediğini fark ettim . Örneğin, ekleme $HOME/.composer/vendor/biniçin PATHin /etc/environmentbu dizinde ikilileri izin vermez bir yol öneki olmadan yürütülecek. Kullanmak ~/.composer/vendor/binda işe yaramıyor. Eğer gerekli mutlak yol, örneğin eklemek buluyorum: /home/vagrant/.composer/vendor/bin. Bu ilişkili görünüyor (bu davranışı açıklamasa da): askubuntu.com/questions/402353/…
Ben Johnson

2
@BenJohnson Bunun nedeni, /etc/environment(ve ~/.pam/environment) pam_envkabuğun veya kabuk / ortam değişkenlerini anlayan başka bir şey değil PAM modülü tarafından okunmasıdır ; aynı şey ~genişleme için de geçerli. Yani, orada mutlak yolu kullanmanız gerekiyor.
heemayl
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.