¿Cómo se configura el entorno para es?

10

He estado jugando con es en los últimos días, y (como rc) tiene la peculiaridad / característica de que solo ejecuta su script de inicio ( .esrc) al iniciar sesión. La forma habitual de ejecutar código en cada sesión interactiva es poner ese código en la %promptfunción.

Por supuesto, no hay %promptfunción si es -lnunca se ha ejecutado.

Entonces, la pregunta: ¿cómo configura el entorno de inicio de sesión cuando ingresa a través de gdm o similar, que solo genera .profile (o .xprofile, .xsession, etc.)? Lo mejor que se me ocurrió es:

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

Lo que parece ... horrible. ¿Algún mejor enfoque?

james.haggerty
fuente
Supongo que esno es su shell de inicio de sesión. ¿Qué hay de ajuste alias es='es -l'en .bashrc?
cjm
eses mi shell de inicio de sesión. Lo siento si no lo dejé claro. Pero los shells de inicio de sesión no se ejecutan en sesiones X antes de que se inicien los terminales, al menos hasta donde yo sé.
james.haggerty
Yo uso bash, no es. Pero cuando abro una nueva ventana de terminal, se ejecuta bashcomo un shell de inicio de sesión.
cjm
Al menos con la mayoría de los terminales X, esta es una opción que está deshabilitada de manera predeterminada (como debería ser, IMO). Entonces, sí, es una solución alternativa, pero no hay ninguna razón para que esto se ejecute varias veces cuando podría ejecutarse una vez.
james.haggerty
Hmm, no estoy seguro de estar de acuerdo con tu edición, Gilles. ¿Por qué crees que esto solo se aplica a es? (y no * csh o rc o ...?) ¿Y por qué eliminar gdm y lightdm, ya que son los que controlan el medio ambiente?
james.haggerty

Respuestas:

1

Como nadie tiene una respuesta real, aquí está mi horrible truco. Algunos shells (* rxvt, por ejemplo) tienen configuraciones que permiten forzar un shell de inicio de sesión. Entonces, en su .Xdefaults, puede agregar algo similar a

urxvt256c-ml:loginShell: true

Lo que significa que todas las urxvt256c-mlterminales que inicies tendrán un shell de inicio de sesión de forma predeterminada.

¿Eso ayuda en absoluto?

Sardathrion - contra el abuso SE
fuente
Bueno, siendo una persona molesta (¿ves los comentarios anteriores?), Diré que ya sabía sobre esto. Es una sacudida si este o mi código ligeramente perturbador es una mejor opción; uno carece de elegancia conceptual (afirmo que inicio sesión para cada terminal, cuando creo 100s en un solo inicio de sesión real?), el otro carece de elegancia de implementación (pero realmente siento que el entorno debe configurarse al iniciar sesión).
james.haggerty
Ah, ya veo lo que quieres decir ahora. Personalmente, considero que un terminal es la unidad de inicio de sesión, no el entorno X11, por lo que tiene sentido que inicie sesión tres veces si tengo tres terminales abiertos. Dejaré la respuesta aquí en caso de que sea útil para otros; veamos cuántos votos negativos atrae. ^ _ ~
Sardathrion - contra el abuso SE