Ortamın doğru şekilde ayarlanması


15

GNOME'u çalıştırmak için zsh ve gdm kullanıyorum. Bir süre önce değişkenlerin doğru ayarlanmadığını keşfettim. Örneğin LANG / LC_ALL yanlış ( ""yerine en_GB.UTF-8).

Ben bölünmüş .zshrciçine .zshrcve .profile. Sonuncusunda ortam değişkenlerini ayarladım, ancak oturum başlamadan önce değişkenleri nasıl ayarlayabilirim? Birkaç seçenek ( .xinitrc, .xsessionrc) denedim ama hiçbiri işe yaramadı.

Düzenlemek için - Ben kullandım .profileve el ile kaynak .zshrc. Yine de soruyu değiştirmez.


.profileYüklenmediniz mi veya yerel değişkenlerin üzerine başka bir şey mi yazılıyor? (Gibi diğer bazı değişken ayarlamayı deneyin export MACIEJ_PROFILE=yesemin olmak için. set -xİçinde .profilede yürütülmektedir ve sonra ne olduğunu kontrol etmek için iyi bir yol olabilir .profile, hiç okumak eğer.) Kaynak hiçbir anlamı yoktur .profileden .zshrc.
Gilles 'SO- kötü olmayı kes

Bu terminal pencerelerinde veya başka bir yerde sorun mu var? Çalıştırırken istediğiniz yerel ayarlarınız var ssh localhost zshmı? Ne olmuş ssh localhost bash? Eğer bash tamam ama zsh değilse, belki bir şey koyarsınız /etc/zshenvveya ~/.zshenv(ki bu her zaman kötü bir fikirdir).
Gilles 'SO- kötü olmayı bırak'

Hiçbir kabuk TAMAM çalışmıyor (bölünmeden önce ve sonra). Sorun, gnome-sessionbu değişkenlerin ayarlanmamış olmasıdır.
Maciej Piechotka

Yanıtlar:


21

Basit yol, bir zaman makinesi icat etmek, kabuk başlangıç ​​dosyalarını tasarlayan çeşitli kişileri ziyaret etmek ve onlara üç şeyi temiz bir şekilde ayırt etmelerini söylemektir:

  • oturum kurulumu, örneğin ortam değişkenleri;
  • oturum başlatma, örn., bir komut satırı kabuğu veya pencere yöneticisi başlatma veya çalıştırma startx;
  • kabuk başlatma, örneğin takma adlar, komut istemi, anahtar bağlamaları.

Bu bir taşınabilir şekilde oturum vs kabuk hakkını almak için çok zor değil: giriş zamanı başlatma gider .profile(veya .zprofile, ya da .login), kabuk başlatma gider .bashrcveya .zshrc. Daha önce yazdım .bash_profile, zsh'a karşı diğer mermiler , taşınabilirlik hakkında (çoğunlukla bash hakkında) , kimin okuduğu hakkında daha fazla.profile .

Geriye kalan bir sorun, oturum kurulumu ile oturum başlatma arasında ayrım yapmaktır. Çoğu durumda, ~/.profileoturum açtığınızda yürütülür ve her ikisi de ikiye katlanabilir, ancak istisnalar vardır:

  • Giriş kabuğunuz (t) csh veya zsh ise ~/.loginve ~/.zprofilebunun yerine kaynaklanıyorsa ~/.profile. Bash ve Ditto ~/.bash_profile, ancak bu kolayca kaynak çözülür ~/.profiledan ~/.bash_profile.
  • Bir görüntüleme yöneticisi (xdm, gdm, kdm,…) altında oturum açarsanız ~/.profile, okunup okunmadığı programın sürümüne, dağıtımınıza (Linux veya başka türlü) ve seçtiğiniz oturum türüne bağlıdır.
    • Sizin için bir oturum başlatmak üzere görüntüleme yöneticisine güveniyorsanız, .profileortam değişkenlerini ayarlamanız gerekir , ancak bir oturum başlatmamalısınız (örn. Bir pencere yöneticisi).
    • X oturumları için geleneksel yapılandırma dosyası ~/.xsessionhem oturum kurulumunu hem de oturum başlatma işlemini gerçekleştirir. Yani dosya aslında olabilir . ~/.xsession; . ~/.xinitrc. Daha ~/.profileönce bazı dağıtımlar kaynak ~/.xsession. Modern dağıtımlar yalnızca ~/.xsessionekran yöneticisinden bir "özel" oturum seçtiğinizde kaynaklanır ve bu tür bir oturum her zaman kullanılabilir değildir.
    • Oturum yöneticinizin ortam değişkenlerini ayarlamak için kendi yolu olabilir. (Bu, bir yapılandırma dosyası aracılığıyla veya oturum açarken bir oturum türü seçerek seçtiğiniz masaüstü ortamınızın isteğe bağlı bir parçasıdır; kullanıcı tarafından yürütülen görüntü yöneticisi tarafından sağlanan oturum başlatma komut dosyalarıyla karıştırmayın, ancak Evet, bu bir karmaşa.)

Özetle, ~/.profileortam değişkenleri için doğru yer. Okunmuyorsa, kaynak yazmayı deneyin ~/.xsession(ve X programlarınızı oradan başlatın) veya sisteme özgü bir yöntem arayın (dağıtımınıza, varsa ekran yöneticinize, ekran yöneticiniz varsa oturum türüne ve masaüstü ortamına veya oturum yöneticisi).


.xsessionaradığım dosyaydı.
Maciej Piechotka

1
Özetiniz dışında her şeye kesinlikle katılıyorum. Bu noktayı kurduğunuzu sanmıyorum. Senin Eğer .profilekaynaklar .bashrcya da benzeri, o zaman kutunun içindeki güvenilir ayarlanan ortam değişkenleri .bashrcsadece giriş oturumları için, ancak bir başlarsanız örneğin farklı ayarlar gereken yeni kabuklar için xtermgelen gnome-terminalve farklı istiyoruz dircolors.
Mikel

@Mikel Ortam değişkenlerini ayarlarsanız .bashrc, önceki ayarlarınızı geçersiz kılar. Örneğin, belirli ortam değişkenleriyle bir Screen veya Tmux örneği başlattıysanız, ayarladığınız her şey .bashrcbu ayarları geçersiz kılar. LS_COLORSözel bir durumdur, çünkü gerçekten terminal başına bir ayardır; ideal olarak terminal emülatörü tarafından ayarlanmalıdır ve bunu bir kabuk rc dosyasında ayarlamak en iyi çaba gerektiren bir çözümdür.
Gilles 'SO- kötü olmayı bırak

1

Gentoo belgelerinde Gentoo Linux Yerelleştirme Kılavuzu makalesi bulunmaktadır . Bölüm 3 yerel ayarı yapmakla ilgilidir.

Çoğu kullanıcı genellikle LANG değişkenini global olarak ayarlar. Bu örnek, unicode Almanca yerel ayarları içindir:

Kod Listeleme 3.1: Varsayılan sistem yerel ayarını /etc/env.d/02locale

LANG="en_GB.UTF-8"

Benim Gentoo LANGbu dosyada ayarlanır ve her şey düzgün çalışıyor ...

pbm@tauri ~ $ cat /etc/env.d/02locale 
LANG="pl_PL.UTF-8"

pbm@tauri ~ $ locale
LANG=pl_PL.UTF-8
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=

Alıntı yaptığınız bölümün iyi olmasına dikkat edin, ancak kılavuz da .bashrcyanlış bir ortam değişkeni ayarlamanızı önerir (yanıtı ve özellikle superuser.com/questions/217431 ).
Gilles 'SO- kötü olmayı bırak'

Çok detaylı bilgi için teşekkürler ... :) Ben hiç kullanmadım .bashrc bölüm - ayarları env.ddaha evrensel.
pbm

Ayrıca kullanıcı başına sistem başına. Sistem ayarlarını kullanıcı ayarlarından ayrı tutmayı tercih ederim.
Maciej Piechotka
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.