Come si configura l'ambiente per es?


10

Ho giocato con es negli ultimi due giorni e (come rc) ha la stranezza / funzionalità che esegue solo il suo script di avvio ( .esrc) al login. Il solito modo per eseguire il codice in ogni sessione interattiva è di inserire quel codice nella %promptfunzione.

Naturalmente, non c'è alcuna %promptfunzione se es -lnon è mai stato eseguito.

Quindi, la domanda: come si imposta l'ambiente di accesso quando si accede tramite gdm o simili, che solo fonte .profile (o .xprofile, .xsession, ecc.)? Il migliore che ho trovato è:

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

Il che sembra ... terrificante. Qualche approccio migliore?


Capisco che esnon è la tua shell di accesso. Che dire di impostazione alias es='es -l'in .bashrc?
cjm

esè la mia shell di accesso. Scusa se non l'ho chiarito. Ma le shell di login non vengono eseguite nelle sessioni X prima dell'avvio dei terminali, almeno per quanto ne so.
james.haggerty il

Io uso bashno es. Ma quando apro una nuova finestra del terminale, viene eseguita bashcome shell di accesso.
cjm

Almeno con la maggior parte dei terminali X, questa è un'opzione disabilitata di default (come dovrebbe essere, IMO). Quindi sì, è una soluzione alternativa, ma non c'è motivo per cui questa roba debba essere eseguita più volte quando potrebbe essere eseguita una volta.
james.haggerty il

Hmm, non sono sicuro di essere d'accordo con la tua modifica, Gilles. Perché pensi che questo valga solo per es? (e non * csh o rc o ...?) E perché rimuovere gdm e lightdm, poiché sono quelli che controllano l'ambiente?
james.haggerty il

Risposte:


1

Dal momento che nessuno ha una vera risposta, ecco il mio orribile hack. Alcune shell (ad esempio * rxvt) hanno impostazioni che consentono di forzare una shell di accesso. Quindi, nel tuo .Xdefaults, puoi aggiungere qualcosa di simile

urxvt256c-ml:loginShell: true

Ciò significa che tutti i urxvt256c-mlterminali che avvierai avranno una shell di login di default.

Questo aiuta a tutti?


Bene, essendo una persona fastidiosa (vedi i commenti sopra?), Dirò che lo sapevo già. È un dubbio se questo o il mio codice leggermente inquietante sia un'opzione migliore; uno manca di eleganza concettuale (sto affermando che eseguo il login per ogni terminale, quando creo 100s su un singolo login reale?), l'altro manca di eleganza dell'implementazione (ma sento davvero che l'ambiente dovrebbe essere impostato al login).
james.haggerty,

Ah, capisco cosa intendi adesso. Personalmente, considero un terminale come un'unità di accesso non l'ambiente X11, quindi per me ha senso essere registrato tre volte se ho tre terminali aperti. Lascerò la risposta qui nel caso in cui sia utile per gli altri - vediamo quanti voti negativi attira. ^ _ ~
Sardathrion - contro l'abuso di SE
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.