Jak skonfigurować środowisko dla es?

10

Grałem z es w ciągu ostatnich kilku dni i (jak rc) ma dziwactwo / funkcję, że uruchamia swój skrypt startowy ( .esrc) po zalogowaniu. Zwykłym sposobem uruchamiania kodu w każdej sesji interaktywnej jest umieszczenie tego kodu w %promptfunkcji.

Oczywiście nie ma żadnej %promptfunkcji, jeśli es -lnigdy nie została uruchomiona.

Więc pytanie: jak ustawić środowisko logowania, gdy wchodzisz przez gdm lub podobny, który tylko źródłowy .profile (lub .xprofile, .xsession itp.)? Najlepsze, co wymyśliłem, to:

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

Co wydaje się ... przerażające. Jakieś lepsze podejścia?

james.haggerty
źródło
Rozumiem, że esto nie jest twoja powłoka logowania. Co o ustawienie alias es='es -l'w .bashrc?
cjm
esjest moją powłoką logowania. Przepraszam, jeśli nie wyjaśniłem tego. Ale powłoki logowania nie są uruchamiane w sesjach X przed uruchomieniem terminali, przynajmniej o ile mi wiadomo.
james.haggerty
Używam bashnie es. Ale kiedy otwieram nowe okno terminala, działa ono bashjako powłoka logowania.
cjm
Przynajmniej w przypadku większości terminali X jest to opcja domyślnie wyłączona (tak jak powinna być, IMO). Tak, jest to obejście, ale nie ma powodu, aby te rzeczy były uruchamiane wiele razy, jeśli można je uruchomić raz.
james.haggerty
Hmm, nie jestem pewien, czy zgadzam się z twoją redakcją, Gilles. Jak myślisz, dlaczego dotyczy to tylko ES? (a nie * csh, rc lub ...?) A po co usuwać gdm i lightdm, skoro to one kontrolują środowisko?
james.haggerty

Odpowiedzi:

1

Ponieważ nikt nie ma prawdziwej odpowiedzi, oto mój okropny hack. Niektóre powłoki (na przykład * rxvt) mają ustawienia umożliwiające wymuszenie powłoki logowania. Tak w .Xdefaults, można dodać coś podobnego do

urxvt256c-ml:loginShell: true

Co oznacza, że ​​wszystkie urxvt256c-mluruchamiane przez ciebie terminale będą domyślnie miały powłokę logowania.

Czy to w ogóle pomaga?

Sardathrion - przeciw nadużyciom SE
źródło
Cóż, będąc irytującą osobą (patrz komentarze powyżej?), Powiem, że już o tym wiedziałem. Rzut okiem, czy ten lub mój nieco niepokojący kod jest lepszą opcją; jednej brakuje elegancji konceptualnej (twierdzę, że loguję się na każdym terminalu, kiedy tworzę setki na jednym prawdziwym loginie?), drugiej brakuje elegancji implementacji (ale naprawdę uważam, że środowisko powinno być skonfigurowane przy logowaniu).
james.haggerty
Ach, rozumiem, co masz na myśli teraz. Osobiście uważam, że terminal jest jednostką logowania, a nie środowiskiem X11, więc loguję się trzykrotnie, jeśli mam trzy otwarte terminale. Pozostawię tutaj odpowiedź na wypadek, gdyby była przydatna dla innych - zobaczmy, ile głosów w dół przyciąga. ^ _ ~
Sardathrion - przeciwko nadużyciom SE