O Zsh pode executar a maioria dos scripts Bourne, POSIX ou ksh88 se você colocá-lo no modo de emulação correto ( emulate sh
ou emulate ksh
). Não suporta todos os recursos do bash ou ksh93. O Zsh tem mais recursos do bash, mas em muitos casos com uma sintaxe diferente.
O shell que você usa interativamente é irrelevante para qualquer script que você tenha. O shell que executa os scripts é o indicado na primeira linha, a linha shebang . Por exemplo, se o script começar com #!/bin/bash
, ele será executado por bash.
Se você personalizou o bash, não será possível renomear seu .bashrc
para .zshrc
. Algumas coisas podem ser compartilhadas, por exemplo, aliases e funções, contanto que você mantenha a interseção entre as duas shells (a interseção é perto de ksh88 e pdksh ). Outras coisas, como configurações de prompt, funções de conclusão e a maioria das opções, precisarão ser completamente reescritas.
Se você estiver escrevendo um snippet para as pessoas acessarem de .bashrc
ou .zshrc
e você não quiser manter duas versões, atenha-se a um subconjunto comum de recursos bash e zsh, que inclui a maioria dos recursos do bash recursos de programação. Coloque todo o seu código em funções e coloque a seguinte linha no topo de cada função:
if [ -n "$ZSH_VERSION" ]; then emulate -L ksh; fi
Você pode usar emulate sh
em vez de emulate ksh
para estar mais perto da sintaxe sh simples, que é o que você precisa para .profile
.
Se uma função chama outra função, a outra função herda a configuração de emulação, então você não precisa colocar esta linha em funções internas, apenas em funções chamadas pelo usuário final.