Bagaimana Anda mengatur lingkungan untuk es?

10

Saya telah bermain dengan es beberapa hari terakhir, dan itu (seperti rc) memiliki quirk / fitur yang hanya menjalankan skrip startupnya ( .esrc) saat login. Cara biasa untuk menjalankan kode di setiap sesi interaktif adalah dengan meletakkan kode itu dalam %promptfungsi.

Tentu saja, tidak ada %promptfungsi jika es -lbelum pernah dijalankan.

Jadi, pertanyaannya: bagaimana Anda mengatur lingkungan login ketika Anda masuk melalui gdm atau sejenisnya, yang hanya sumber .profile (atau .xprofile, .xsession, dll.)? Yang terbaik yang saya hasilkan adalah:

if [ -f "$HOME/.esrc" ]; then
    eval "`es -l <<-x
        sh <<<'export -p'
    x`"
fi

Yang sepertinya ... mengerikan. Adakah pendekatan yang lebih baik?

james.haggerty
sumber
Saya kira itu esbukan shell login Anda. Bagaimana pengaturan alias es='es -l'di .bashrc?
cjm
esadalah shell login saya. Maaf jika saya tidak menjelaskannya. Tapi shell login tidak berjalan dalam sesi X sebelum terminal diluncurkan, setidaknya sejauh yang saya tahu.
james.haggerty
Saya menggunakan bash, bukan es. Tetapi ketika saya membuka jendela terminal baru, itu berjalan bashsebagai shell login.
cjm
Setidaknya dengan sebagian besar terminal X, ini merupakan opsi yang dinonaktifkan secara default (sebagaimana mestinya, IMO). Jadi ya, ini adalah solusi, tetapi tidak ada alasan hal ini harus dijalankan beberapa kali ketika bisa dijalankan sekali.
james.haggerty
Hmm, tidak yakin saya setuju dengan hasil edit Anda, Gilles. Menurut Anda mengapa ini hanya berlaku untuk es? (dan bukan * csh atau rc atau ...?) Dan mengapa menghapus gdm dan lightdm, karena merekalah yang mengendalikan lingkungan?
james.haggerty

Jawaban:

1

Karena tidak ada yang punya jawaban nyata, ini hack saya yang mengerikan. Beberapa shell (* rxvt misalnya) memiliki pengaturan yang memungkinkan untuk memaksa shell login. Jadi, di Anda .Xdefaults, Anda dapat menambahkan sesuatu yang mirip

urxvt256c-ml:loginShell: true

Yang berarti bahwa semua urxvt256c-mlterminal yang Anda luncurkan akan memiliki shell login secara default.

Apakah itu membantu?

Sardathrion - menentang penyalahgunaan SE
sumber
Nah, menjadi orang yang menyebalkan (lihat komentar di atas?), Saya akan mengatakan saya sudah tahu tentang ini. Ini undian apakah ini atau kode saya yang sedikit mengganggu adalah pilihan yang lebih baik; yang satu tidak memiliki keanggunan konseptual (saya mengklaim bahwa saya masuk untuk setiap terminal, ketika saya membuat 100-an lebih dari satu login nyata?), yang lain tidak memiliki keanggunan implementasi (tapi saya benar-benar merasa lingkungan harus diatur pada login).
james.haggerty
Ah, aku mengerti maksudmu sekarang. Secara pribadi, saya menganggap terminal sebagai unit login bukan lingkungan X11 sehingga masuk akal bagi saya untuk login tiga kali jika saya memiliki tiga terminal terbuka. Saya akan meninggalkan jawabannya di sini untuk berjaga-jaga jika ini berguna untuk orang lain - mari kita lihat berapa banyak suara turun yang menarik. ^ _ ~
Sardathrion - terhadap penyalahgunaan SE