Por "mudar para zsh", suponho que você quer dizer uma de duas coisas:
- você usará
chsh
(ou equivalente) para alterar seu shell de login para zsh , ou
- você irá configurar o Terminal (ou equivalente) para usar zsh como seu shell padrão.
A maioria dos programas shell (shell “scripts”) incluirá um “shebang” / “hash-bang”
Como várias outras respostas indicam, os programas shell que usam uma linha shebang não serão afetados pela seleção de shell de login do usuário, nem pelo shell interativo que é o pai ou pai-N de um programa shell lançado.
Se você está instalando uma nova versão do zsh e a incluindo no seu PATH, programas que usam um shebang como #!/usr/bin/env zsh
usarão essa nova versão (quando são iniciados com um PATH que coloca o novo zsh primeiro). Isso só pode causar problemas se alguma alteração incompatível for feita entre a versão antiga / original do zsh e a nova. Note que este seria um problema intra- zsh (inter- zsh -versão), não o problema entre as consolas sobre o qual suspeito que esteja preocupado. Esta é geralmente uma categoria muito menor de erro do que se (por exemplo) você tentasse executar um programa bash com ksh .
O não uso de uma linha shebang não é inerentemente portátil entre os ambientes do usuário. O resultado de tentar executar um arquivo † executável e não-binário que não possui um shebang depende do ambiente (SO, shell, possivelmente shell de login e variáveis de ambiente). Quando esse arquivo é executado no sistema Mac OS X 10.4, o comportamento varia de acordo com o shell que o executa. ksh e bash interpretam o arquivo em uma cópia bifurcada de si mesmos. zsh sempre passa para /bin/sh
. Se algum programa tentasse exec
diretamente, ele falharia com ENOEXEC
(isso acontece dentro do shell, eles apenas “cobrem” por “executá-lo” de uma maneira alternativa). Eu tenho uma vaga lembrança de alguns sistemas antigos, mesmo tentando usar o shell de login do usuário nesta situação, mas minha busca rápida não revelou nada útil.
† Um arquivo não-binário é um arquivo que o kernel não reconhece como um dos formatos de objeto binário suportados.
No que diz respeito à compatibilidade interativa, zsh suporta muito da sintaxe estendida de bash e ksh (alguns dos devem ser habilitados com No entanto, muitas das opções de shell encontradas no Super User funcionarão bem em zsh (mesmo que algumas delas sejam compostas por “bashisms”). Algumas coisas (ligações de edição de linha de comando, conclusão ‡ , exibições de prompt, etc.) são totalmente diferentes de bash e ksh e requerem uma sintaxe diferente para operações semelhantes.
‡ zsh tem um pouco de bash compatibilidade de finalização, mas eu nunca tentei isso.