X uygulamalarının erişebilmesi için PATH veya diğer ortam değişkenlerini nasıl ayarlarım?


16

Env değişkenlerini KDE tarafından tanınacak şekilde nasıl ayarlayabilirim?

Kabuk olmayan bir ortamda (KDE) yolu nasıl ayarlarsınız?

Yukarıdaki iki sorunun aksine, bunu GNOME için nasıl yapacağımı bilmek istiyorum. Ya da daha iyisi, pencere yöneticisinden bağımsız bir yöntem var mı? Kabuk / terminal için genellikle düzenlerim ~/.bashrc. Pencere yöneticisi ne olursa olsun, ortam değişkenlerinin tüm X uygulamaları için kullanılabilmesi için dışa aktarma ifadelerini nereye yerleştirebilirim?

Yanıtlar:


12

Pam_env PAM modülü let siz ya bunları var /etc/environmentya da ~/.pam_environmenttüm kullanıcıların (geniş sisteme) için istemenize bağlı, ya da sadece kullanıcı (oturuma geniş).

Sistem çapında ortam değişkenleri

Sistemi bir bütün olarak etkileyen ortam değişkeni ayarları (sadece belirli bir kullanıcı yerine), sistem veya masaüstü oturumu yüklendiğinde çalıştırılan birçok sistem düzeyi komut dosyasına yerleştirilmemeli,

/etc/environment- Bu dosya özellikle sistem genelindeki ortam değişkeni ayarları içindir. Bir komut dosyası değildir, her satırda bir tane olmak üzere atama ifadelerinden oluşur. Özellikle, bu dosya sistem çapında yerel ayarları ve yol ayarlarını saklar.

Oturum genelindeki ortam değişkenleri

Yalnızca belirli bir kullanıcıyı (bir bütün olarak sistem yerine) etkilemesi gereken ortam değişkeni ayarları şu şekilde ayarlanmalıdır:

~/.pam_environment- Bu dosya özellikle kullanıcının ortamını ayarlamak içindir. Bir komut dosyası değildir, her satırda bir tane olmak üzere atama ifadelerinden oluşur.

Not: .pam_environmentDeğişkenleri başlatmak için kullanmak için yeniden giriş yapılması gerekir. Yalnızca terminalin yeniden başlatılması değişkenleri kullanabilmek için yeterli değildir.

Ubuntu'nun Ortam Değişkenleri wiki'sinde daha fazlasını görün .


2
Çözümle ilgili sorun , dağıtım aksi belirtilmedikçe ~/.pam_environmentvarsayılan olarak pam_env modülünün okumamasıdır . Fedora 20'de, örneğin okunmuyor.
Cristian Ciupitu

@CristianCiupitu haklı. ~/.xsessionX uygulamaları için ortam değişkenlerini yükler. Bkz. Unix.stackexchange.com/questions/47359/what-is-xsession-for
Tek

@CristianCiupitu: Yorumunuz için beni pam_env'e götüren çok teşekkürler. Kullanıcı ortamını etkinleştirmek için Fedora 24 pam dosyalarımı güncelledim. Şimdi Wayland seanslarımın hepsinde yine özel bir PATH var.
Zan Lynx

@CristianCiupitu doğru mu? Linux-pam.org/Linux-PAM-html/sag-pam_env.html belgeleri , aksi belirtilmedikçe ~ / .pam_environment öğesinin okunması gereken varsayılan dosya olduğunu gösterir. Şu hatta bakın user_envfile=filename. Pam_env ile ilgili benim sorun, PAM uygulamasına bağlı olarak HOME değişken kullanılabilir olmayabilir. Hangi kullanımı sadece mutlak değişkenlerle sınırlar.
CMCDragonkai

2
@CMCDragonkai, Fedora'nın pam_env (8) kılavuz sayfası şöyle derdi: " PAM ortamındaki kullanıcı tarafından sağlanan ortam değişkenleri, sistem yöneticisinin onayı olmadan yığındaki sonraki modüllerin davranışını etkileyebileceğinden , varsayılan olarak bu seçenek kapalıdır " . Bu nedenle, akış yukarı PAM modülünde bazı varsayılan ayarlar olsa da, bazı dağıtımlar bunların üzerine yazılır.
Cristian Ciupitu

1

/etc/X11/Xsession.d/... veya Linux'unuza bağlı olarak bu dizinin satırları boyunca (?). Ben üstüne biraz yazdım buraya .

Kavram, oturum açtıktan sonra bir görüntüleme yöneticisinin bir "Xsession" başlatması ve bu dizindeki her şeyi alfabetik sırayla kaynaklaması (!). PATH'yi değiştiren bir komut dosyası ekleyebilirsiniz. Xsession eninde sonunda DE'niz olacaktır ve genellikle tüm süreçler bu Xsession'ın çocuklarıdır, bu nedenle PATH ortamını miras alır.


$ HOME dizinimde ayarlayabileceğim bir eşdeğer var mı? .Xsession gibi mi?
Code-Guru

Xession (5) 'e göre: /etc/X11/Xsession.d/40x11-common_xsessionrc Kaynak küresel çevre değişkenleri. Bu komut dosyası, dosya varsa $ HOME / .xsessionrc içindeki her şeyi kaynaklayacaktır. Bu, kullanıcının X oturumu için yerel bilgiler gibi global ortam değişkenlerini ayarlamasına olanak tanır.
Bananguin

1

İşlem, ortamı başlatan üst işlemden devralır. Bir alt öğedeki PATH veya diğer ortam değerlerini değiştirmek için, üst öğedeki bir değere bir değişken ayarlayabilir ve bir kabuktaysak değişkeni dışa aktarabilir ve alt işlemi başlatabiliriz. Çocuk ayrıca başladığında kendi ortamını değiştirmek için bir veya daha fazla başlatma dosyasını okuyabilir.

Bu nedenle, bir cevap almak için iki soru daha var:

PATH veya ortam değişikliğinden etkilenmesini istediğiniz sürece yol açan ebeveyn / çocuk miras ağacı nedir?

Hangi başlatma dosyaları bu ağaçtaki ilgili işlemler tarafından kullanılır / okunur / kaynaklanır?

İşte bir miras ağacı ile ne demek istediğimi göstermek için ps (1) çıktısının bir parçası:

# /bin/ps -o 'uid:5,pid:5,ppid:5,user:4,args' axf 

UID   PID  PPID USER COMMAND
  0     1     0 root /usr/lib/systemd/systemd
  0  1481     1 root /usr/sbin/gdm-binary -nodaemon
  0  1497  1481 root  \_ /usr/libexec/gdm-simple-slave ...
  0  1504  1497 root      \_ /usr/bin/Xorg :0 ...
  0  1855  1497 root      \_ gdm-session-worker ...

\ _ Grafik dizilerini ve PIP / PPID numaralarını (İşlem Kimliği ve Ana PID) not edin. PID 1855, 1481 tarafından başlatılan ve atadan çıkış işlemi 0 tarafından başlatılan PID 1 tarafından başlatılan 1497 tarafından başlatıldı.

Etkilemek istediğiniz süreç için benzer bir miras izlemesi yapın, hangi başlatma dosyalarının alakalı olduğunu belirleyin ve bu ağacın herhangi bir yerinde, muhtemelen aşağıdakine benzer bir şeyle PATH'de değişiklik yapın:

PATH=${PATH}:/usr/local/bin

psGUI oturum açma işleminin üst sürecini belirlemek için kullanabilir miyim ?
Code-Guru
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.