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?


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?


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.