Hangi dosyaların ortam değişkenlerine ayarlandığını / eklendiğini ve bunların öncelik sırasını bulmak mümkün müdür?


9

Benim ortam değişkenleri (bazıları $PATH, $MANPATHve arkadaşları) kısmen farklı kaynak dosyalarında ayarlanır.

Kendimi belirli bir ortam değişkeninde hangi dosyadan hangi parçanın geldiğini hızlı bir şekilde toplamak için bir komut veya yöntem isteyen diliyorum .

Benim $ PATH, örneğin, belli ki olmuştur kümesi içinde (eklenen) .bashrc, /etc/paths, /etc/paths.d/X11... ve hala fazlasıyla skinTenimde yinelenen yol tanımını yarattığı son gizemli dosyası arıyorum $PATH.

Ortam değişkenlerine katkıda bulunan dosyaları el ile belirlemek iyi bir zaman alır. Tüm pasaportları takip etmek için bu gereksiz emeği atlamak için faydalı bir yol olmalı… yoksa ben de bu çizgiler boyunca düşünen tek kişi ben miyim?

Yanıtlar:


6

Genellikle PATHde günlükleri size (yani program tarafından bir oranda sisteme bağlıdır şekilde bir başlangıç değerine ayarlanır pam_env, sonra ortak bir katkıda bulunan) /etc/profileve ~/.profileonlar bu değeri değiştirmek için devam içerdiğini ve dosyaları.

Herhangi bir değişiklik çıkarın PATHiçinde .bashrc, çevre ayarları içinde aittir yok .bashrc: bkz .bashrc ve .bash_profile arasındaki Fark .

İlk olarak metin modunda (örneğin ile ssh localhost) oturum açmayı deneyin , çünkü oturum başlatma grafik modunda olduğundan çok daha basittir.

Put set -xbaşında /etc/profileve ~/.profile. Kabuk, standart hata akışında yaptıklarının bir izini basacaktır; PATHizinde ödev arayın .

Ortam değişkeni atamalarına öncelik verilmez: son kazananları kim atar?


6

PATH dosyanız yalnızca .bashrc dosyanızda değil, herhangi bir yerde ayarlanabilir. Büyük olasılıkla sisteminizde bir dosya vardır /etc/profileve / veya /etc/profile.localsisteminizdeki tüm kullanıcılar için varsayılan bir yol belirler. Kullanıcıya özgü değişiklikler veya eklemeler, bilgisayarınızda bulunmuyorsa .profiledosyanızda ayarlanmış olabilir .bashrcveya sisteminizde varsayılanı kullanıyor olabilirsiniz.

Yalnızca sizi etkileyen değişiklikler yapmak isterseniz, .profileaşağıdaki formu kullanarak bunları sizin yerinize koyarım:

export PATH=/new/directory:$PATH

böylece mevcut yolu tamamen yeniden yazmak yerine düzenlemek.

Arasında "başlatma" bölümüne man bash(ya da burada ) arasındaki farkı açıklar .profileve .bashrcve benzeri, ve hangi diğer dosyaları ve okumak ve ne giriş veya bir kabuk başlatmak amacıyla.


1

Bunun için bir mekanizmanın olması pek olası değildir. Kabuktaki bir env değişkeninin değerini değiştirmek için kaç yol olduğunu düşünün.

set -xYine de biraz şansınız olabilir .

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.