Existe uma diferença prática entre alterar o shell de um usuário por chsh e editar .bashrc?

1

Eu sempre configuro meu shell usando chsh ou sudo vim /etc/passwd . Recentemente conversei com alguém que em vez disso define seu shell adicionando o seguinte a ~/.bashrc (ou presumivelmente o arquivo rc de qualquer shell padrão da máquina): SHELL=/bin/zsh exec /bin/zsh --login .

Existe uma diferença prática entre essas duas abordagens?

    
por Jones 30.06.2017 / 23:40

1 resposta

6

O último método não altera o seu shell - ele apenas diz ao shell antigo para executar um novo.

Além de ser quase duas vezes mais lento (já que você sempre começa a bater cada vez), isso pode resultar em algumas interações inesperadas:

  • Em alguns sistemas, comandos em lote como ssh myhost "ps -ef" irão originar ~ / .bashrc antes de executar o comando - mas sua linha "exec zsh" esqueceu-se de explicar isso e executa um interativo shell, não importa o quê. Se isso acontecer, todo o uso em lote do SSH (incluindo SFTP) está quebrado.

  • Em outros sistemas, tais comandos em lotes não originam ~ / .bashrc (ou, freqüentemente, eles fazem, mas ~ / .bashrc retorna cedo se estiver em modo batch) - assim seu "exec zsh" nunca é alcançado. Portanto, a tentativa do seu amigo de mudar o shell é menos eficaz.

  • Se você esquecer essa alteração e tentar editar ~ / .zshrc para fazer o oposto (ou seja, executar o bash), obterá um loop infinito.

por 01.07.2017 / 00:49

Tags