Cara sederhananya adalah menciptakan mesin waktu, mengunjungi berbagai orang yang merancang file startup shell dan menyuruh mereka untuk membedakan antara tiga hal:
- pengaturan sesi, misalnya variabel lingkungan;
- peluncuran sesi, misalnya, misalnya memulai shell baris perintah atau manajer jendela atau menjalankan
startx;
- inisialisasi shell, misalnya alias, prompt, binding kunci.
Tidak terlalu sulit untuk mendapatkan sesi vs shell dengan cara yang portabel: inisialisasi waktu masuk masuk ke .profile(atau .zprofile, .login), inisialisasi shell masuk .bashrcatau .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, ~/.profiledieksekusi ketika Anda masuk dan dapat menggandakan keduanya, tetapi ada pengecualian:
- Jika shell login Anda adalah (t) csh atau zsh,
~/.logindan ~/.zprofilebukan bersumber ~/.profile. Ditto untuk bash dan ~/.bash_profile, tapi ini mudah diselesaikan dengan sumber ~/.profiledari ~/.bash_profile.
- Jika Anda masuk di bawah manajer tampilan (xdm, gdm, kdm, ...), apakah Anda
~/.profilemembaca tergantung pada versi program, pada distribusi Anda (Linux atau yang lain), dan pada tipe sesi apa yang Anda pilih.
- Jika Anda mengandalkan manajer tampilan untuk memulai sesi untuk Anda, Anda
.profileharus mengatur variabel lingkungan tetapi tidak memulai sesi (misalnya manajer jendela).
- File konfigurasi tradisional untuk sesi X adalah
~/.xsession, melakukan pengaturan sesi dan peluncuran sesi. Jadi file tersebut pada dasarnya . ~/.xsession; . ~/.xinitrc. Beberapa sumber distribusi ~/.profilesebelumnya ~/.xsession. Sumber distribusi modern hanya ~/.xsessionketika Anda memilih sesi "kustom" dari manajer tampilan, dan sesi seperti itu tidak selalu tersedia.
- Manajer sesi Anda mungkin memiliki cara sendiri untuk mengatur variabel lingkungan. (Itu adalah bagian opsional dari lingkungan desktop Anda, yang dipilih oleh Anda melalui file konfigurasi atau dengan memilih jenis sesi saat masuk; jangan bingung dengan skrip startup sesi yang disediakan oleh manajer tampilan, yang dieksekusi di bawah pengguna Anda tetapi dipilih berdasarkan sistem. Ya, ini berantakan.)
Singkatnya, ~/.profileadalah 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).
.profiletidak dimuat sama sekali, atau ada sesuatu yang menimpa variabel lokal? (Coba tetapkan beberapa variabel lain sepertiexport MACIEJ_PROFILE=yesmemastikan.set -xDi.profiledapat menjadi cara yang baik untuk memeriksa apa yang sedang dieksekusi dalam dan setelah.profile, jika itu dibaca sama sekali.) Tidak ada gunanya dalam sumber.profiledari.zshrc.