Como você configura o ambiente para es?

10

Eu tenho jogado com es nos últimos dois dias, e ele (como rc) tem a peculiaridade / recurso de executar apenas o script de inicialização ( .esrc) no login. A maneira usual de executar código em cada sessão interativa é colocar esse código na %promptfunção

Obviamente, não há %promptfunção se es -lnunca foi executada.

Então, a pergunta: como você define o ambiente de login quando entra através do gdm ou similar, que apenas origina .profile (ou .xprofile, .xsession etc.)? O melhor que eu criei é:

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

O que parece ... horrível. Alguma abordagem melhor?

james.haggerty
fonte
Acho que esse esnão é o seu shell de login. Que tal definição alias es='es -l'em .bashrc?
Cjm 22/08/12
esé o meu shell de login. Desculpe se eu não deixei isso claro. Mas os shells de login não são executados nas sessões X antes do lançamento dos terminais, pelo menos até onde eu saiba.
james.haggerty
Eu uso bash, não es. Mas quando abro uma nova janela de terminal, ela é executada bashcomo um shell de login.
Cjm
Pelo menos na maioria dos terminais X, esta é uma opção que está desativada por padrão (como deveria ser, IMO). Portanto, sim, é uma solução alternativa, mas não há razão para que esse material deva ser executado várias vezes quando pode ser executado uma vez.
james.haggerty
Hmm, não tenho certeza se concordo com sua edição, Gilles. Por que você acha que isso se aplica apenas a es? (e não * csh, rc ou ...?) E por que remover gdm e lightdm, já que eles controlam o ambiente?
james.haggerty

Respostas:

1

Como ninguém tem uma resposta real, aqui está o meu truque horrível. Alguns shells (* rxvt por exemplo) possuem configurações que permitem forçar um shell de login. Então, no seu .Xdefaults, você pode adicionar algo parecido com

urxvt256c-ml:loginShell: true

O que significa que todos os urxvt256c-mlterminais que você iniciar terão um shell de login por padrão.

Isso ajuda em tudo?

Sardathrion - contra o abuso de SE
fonte
Bem, sendo uma pessoa chata (veja os comentários acima?), Direi que já sabia disso. É uma brincadeira se esse ou meu código um pouco perturbador é uma opção melhor; um não possui elegância conceitual (estou afirmando que efetuo login em cada terminal, quando crio 100s em um único login real?), o outro não possui elegância de implementação (mas realmente acho que o ambiente deve ser configurado no login).
precisa saber é o seguinte
Ah, entendo o que você quer dizer agora. Pessoalmente, considero que um terminal é a unidade de logon e não o ambiente X11, portanto, faz sentido fazer logon três vezes se houver três terminais abertos. Deixarei a resposta aqui para o caso de ser útil para outras pessoas - vamos ver quantos votos negativos atraem. ^ _ ~
Sardathrion - contra abuso de SE 23/08