gvim não lê o zshrc quando iniciado a partir do desktop

5

Estou usando zsh como meu shell padrão e usando .zshrc para modificar minhas variáveis de ambiente. Quando eu inicio o gvim do terminal, tudo está bem, no entanto, se eu iniciar o gvim com o ícone da área de trabalho, minhas variáveis env acabaram. (Apenas para limpá-lo, :shell está bom, mas os comandos :! não estão)

Eu tentei mover minhas variáveis de ambiente para .zprofile , mas não funcionou. Se eu movê-los para .profile ele funciona, mas, novamente, preciso duplicar minhas variáveis, pois zsh não lê .profile

Eu não sei muito sobre o manuseio interno de shells em gvim . É possível ler os comandos .zshrc ou .zprofile para :! ?

Observação: estou usando um sistema ubuntu . Qualquer solução elegante que envolva o sistema operacional também é bem-vinda.

    
por none 16.08.2012 / 17:46

2 respostas

3

Se não for um shell interativo ou de login, acho que você ficou com ~/.zshenv . O seguinte é da seção "STARTUP / SHUTDOWN FILES" em zshall(1) :

Commands are then read from $ZDOTDIR/.zshenv.  If the shell is a login
shell,  commands  are  read  from  /etc/zsh/zprofile  and  then $ZDOT-
DIR/.zprofile.  Then, if the shell is interactive, commands  are  read
from  /etc/zsh/zshrc  and then $ZDOTDIR/.zshrc. Finally, if the shell
is a login shell, /etc/zsh/zlogin and $ZDOTDIR/.zlogin are read.
    
por 16.08.2012 / 18:32
6

using .zshrc to modify my environment variables

Essa é a causa raiz do seu problema. .zshrc é um arquivo de inicialização para sessões de shell interativas. Use-o para definir configurações de shell, não para definir variáveis de ambiente. Variáveis de ambiente geralmente são definidas em um arquivo de sessão, como .profile . Veja Alternativa para .bashrc (o que vale para .bashrc também vale para .zshrc ).

Se zsh for seu shell de login, ele não lerá ~/.profile , mas lerá ~/.zprofile . Note que o zsh não precisa ser seu shell de login, mesmo que seja seu shell interativo: você pode usar /bin/sh como seu shell de login e definir SHELL=$(command -v zsh) em seu ambiente para que os emuladores de terminal e similares executem o zsh. Como você diz que definir suas variáveis de ambiente em ~/.zprofile não funcionou, provavelmente é assim que seu sistema já está configurado, mas é difícil dizer sem informações mais precisas que “não funcionaram”.

Se o seu shell de login é zsh, coloque a seguinte linha no seu ~/.zprofile para ler .profile :

emulate ksh -c '. ~/.profile'

Geralmente, você pode usar um . ~/.profile simples, porque é improvável que as incompatibilidades entre shells do estilo zsh e Bourne surjam em .profile .

    
por 16.08.2012 / 20:50

Tags