Por que não alterar o shell padrão do usuário usando chsh
?
$ chsh -s /usr/bin/zsh
Eu substituí sh com zsh pelos seguintes comandos:
$ sudo mv /bin/sh /bin/sh1
$ sudo ln -s /usr/bin/zsh /bin/sh
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 12 Jul 6 20:48 /bin/sh -> /usr/bin/zsh
$ which sh
/bin/sh
$ sh
$ exit
$ zsh
mpc% exit
Como você pode ver, o comando sh
não abre um shell zsh
, embora tenha sido vinculado. A questão é por quê? Como posso consertar isso?
Por que não alterar o shell padrão do usuário usando chsh
?
$ chsh -s /usr/bin/zsh
É suposto fazer isso. Se você iniciá-lo como sh
, ele pressupõe que você quer algo que seja mais compatível com outros shells chamados sh
e seja executado em um modo de compatibilidade.
Veja o link :
Zsh tries to emulate sh or ksh when it is invoked as
sh
orksh
respectively; [...]In sh and ksh compatibility modes the following parameters are not special and not initialized by the shell: ...
prompt
,PROMPT
, ...The usual zsh startup/shutdown scripts are not executed.
Não tenho certeza se é possível não ter funcionado no modo de compatibilidade quando chamado como sh
, mas isso pode interromper vários scripts em seu sistema que supõem que /bin/sh
seja apenas sh
, não Zsh.
Provavelmente, é melhor executá-lo como zsh
.