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?


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?


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.