Saya menggunakan zsh dan gdm untuk menjalankan gnome. Beberapa waktu lalu saya menemukan bahwa variabel tidak diatur dengan benar. Misalnya LANG / LC_ALL tidak benar ( ""
bukan en_GB.UTF-8
).
Saya membagi .zshrc
menjadi .zshrc
dan .profile
. Dalam yang terakhir saya mengatur variabel lingkungan, tetapi bagaimana saya bisa mengatur variabel sebelum sesi dimulai? Saya mencoba beberapa pilihan ( .xinitrc
, .xsessionrc
) tetapi tidak ada yang berhasil.
Sunting Untuk memperjelas - Saya menggunakan .profile
dan secara manual mengambilnya .zshrc
. Itu tidak mengubah pertanyaan.
gnome
desktop-environment
gentoo
gdm
environment-variables
Maciej Piechotka
sumber
sumber
.profile
tidak dimuat sama sekali, atau ada sesuatu yang menimpa variabel lokal? (Coba tetapkan beberapa variabel lain sepertiexport MACIEJ_PROFILE=yes
memastikan.set -x
Di.profile
dapat menjadi cara yang baik untuk memeriksa apa yang sedang dieksekusi dalam dan setelah.profile
, jika itu dibaca sama sekali.) Tidak ada gunanya dalam sumber.profile
dari.zshrc
.ssh localhost zsh
? Bagaimana denganssh localhost bash
? Jika bash baik-baik saja tetapi tidak zsh, mungkin Anda memasukkan sesuatu/etc/zshenv
atau~/.zshenv
(yang hampir selalu merupakan ide yang buruk).gnome-session
tidak memiliki set variabel ini.Jawaban:
Cara sederhananya adalah menciptakan mesin waktu, mengunjungi berbagai orang yang merancang file startup shell dan menyuruh mereka untuk membedakan antara tiga hal:
startx
;Tidak terlalu sulit untuk mendapatkan sesi vs shell dengan cara yang portabel: inisialisasi waktu masuk masuk ke
.profile
(atau.zprofile
,.login
), inisialisasi shell masuk.bashrc
atau.zshrc
. Saya sebelumnya telah menulis tentang.bash_profile
, zsh vs shell lainnya , lebih banyak tentang portabilitas (kebanyakan tentang bash) , lebih banyak tentang siapa yang membaca.profile
.Masalah yang tersisa adalah membedakan antara pengaturan sesi dan peluncuran sesi. Dalam kebanyakan kasus,
~/.profile
dieksekusi ketika Anda masuk dan dapat menggandakan keduanya, tetapi ada pengecualian:~/.login
dan~/.zprofile
bukan bersumber~/.profile
. Ditto untuk bash dan~/.bash_profile
, tapi ini mudah diselesaikan dengan sumber~/.profile
dari~/.bash_profile
.~/.profile
membaca tergantung pada versi program, pada distribusi Anda (Linux atau yang lain), dan pada tipe sesi apa yang Anda pilih..profile
harus mengatur variabel lingkungan tetapi tidak memulai sesi (misalnya manajer jendela).~/.xsession
, melakukan pengaturan sesi dan peluncuran sesi. Jadi file tersebut pada dasarnya. ~/.xsession; . ~/.xinitrc
. Beberapa sumber distribusi~/.profile
sebelumnya~/.xsession
. Sumber distribusi modern hanya~/.xsession
ketika Anda memilih sesi "kustom" dari manajer tampilan, dan sesi seperti itu tidak selalu tersedia.Singkatnya,
~/.profile
adalah tempat yang tepat untuk variabel lingkungan. Jika tidak dibaca, coba sumber dari~/.xsession
(dan mulai program X Anda dari sana), atau cari metode khusus sistem (yang mungkin tergantung pada distribusi Anda, manajer tampilan jika ada, jenis sesi jika manajer tampilan, dan lingkungan desktop atau manajer sesi).sumber
.xsession
adalah file yang saya cari..profile
sumber Anda.bashrc
atau yang serupa, maka Anda dapat dengan andal mengatur variabel lingkungan.bashrc
untuk tidak hanya sesi login, tetapi untuk shell baru yang memerlukan pengaturan berbeda, misalnya jika Anda memulaixterm
darignome-terminal
dan ingin berbedadircolors
..bashrc
, mereka akan menimpa pengaturan Anda sebelumnya. Misalnya, jika Anda telah memulai instance Screen atau Tmux dengan variabel lingkungan tertentu, apa pun yang Anda setel.bashrc
akan menimpa pengaturan ini.LS_COLORS
adalah kasus khusus karena ini benar-benar pengaturan per terminal; idealnya itu harus diatur oleh terminal emulator, dan pengaturannya dalam file shell rc adalah solusi terbaik.Dalam dokumentasi Gentoo ada artikel Panduan Pelokalan Gentoo Linux . Bab 3 adalah tentang pengaturan lokal.
Di Gentoo saya
LANG
diatur dalam file ini dan semuanya berfungsi dengan baik ...sumber
.bashrc
, yang salah (lihat jawaban saya dan khususnya superuser.com/questions/217431 ).env.d
lebih universal.