O Zsh tem um modo de compatibilidade sh que permite executar código sh POSIX e algumas extensões bash. Contanto que você não use recursos bash que o zsh não possui (com a mesma sintaxe), você pode ter o mesmo arquivo de origem de ambos os shells. Use o emulate
embutido para colocar o zsh no modo de compatibilidade; com a opção -L
, a emulação é local para a função de inclusão (não o script de origem).
source_sh () {
emulate -LR sh
. "$@"
}
Para coisas como variáveis de ambiente, você pode usar source_sh /etc/profile
em /etc/zprofile
e source_sh ~/.profile
em ~/.zprofile
, pois os arquivos de perfil provavelmente não usarão recursos específicos do bash.
Para coisas como aliases e definições de funções, uma vez que os arquivos shell rc provavelmente contêm muitas coisas que não podem ser compartilhadas (prompt, atalhos de teclado, configurações de conclusão,…), use um arquivo como ~/.sh_aliases
que é originado em ~/.bashrc
e source_sh
'd em ~/.zshrc
.