~ / .zprofile não é lido no login gráfico quando o shell padrão do usuário é zsh

1

Estou usando o Ubuntu 14.04. Eu usei chsh para definir meu shell padrão como /usr/bin/zsh .

Meu ~/.zprofile define várias variáveis de ambiente, por exemplo, %código%. No entanto, após o login e o início do Terminal do GNOME, essas variáveis não são configuradas. Depois de executar export EDITOR=vim , eles são:

% echo $EDITOR

% zsh -l
% echo $EDITOR
vim
%

Então, aparentemente quando zsh -l é executado no login, ele não sabe que é um shell de login e, portanto, não lê zsh ? O que dá?

Tanto quanto eu posso dizer, isso estava funcionando até recentemente, então de repente não foi, então talvez uma atualização quebrou alguma coisa?

    
por ke. 12.12.2015 / 23:40

1 resposta

3
% bl0ck_qu0te%

Você está executando zsh no Terminal do GNOME, não no login. Compare alternando para um TTY ( Ctrl Alt F1 ) e efetuando login.

% bl0ck_qu0te%

O termo "shell de login" está sobrecarregado:

  1. É o shell mencionado em sua entrada passwd . Os métodos de login baseados em console geralmente iniciam esse shell (tente os TTYs ou sudo -l ou su - ). "Login shell" com este contexto é usado na discussão de contas de usuário.
  2. Um shell pode ser executado como um shell de login, independentemente de ser um shell de login (1) do usuário. Com a maioria dos shells parecidos com Bourne, isso é obtido usando -l quando executado manualmente ou usando - como o primeiro caractere do argumento 0 quando iniciado indiretamente (por login , sudo , su , etc . Este significado é usado ao discutir a invocação de shells.

Portanto, não é um shell de login (2), porque estamos discutindo como ele é iniciado (invocação).

.zprofile é lido por shells de login (2). O Terminal GNOME não executa um shell de login (2) por padrão. Você tem que dizer que o faça :

% bl0ck_qu0te%     
por muru 12.12.2015 / 23:52