O Wiki de Greg tem uma publicação sobre a adaptação Scripts bash para Dash que apontam muitos 'bashisms' - recursos extras que são não-padrão, mas fazem parte do bash. Evitar esses bashisms pode ajudar a tornar seu script mais amigável em diferentes ambientes. Isso responde particularmente algumas de suas perguntas. Por exemplo, sim, há operadores que diferem (como ==
), mas há um conjunto padrão de Posix que deve funcionar em todos os ambientes.
Para uma leitura mais completa, você pode conferir o padrão Posix , ao qual todos os shells devem obedecer. Particularmente, o volume em "Shell e utilitários".
O que eu acho mais desafiador do que as diferenças de shell são as diferenças de comando. Muitos sistemas Linux têm o GNU find
, mas se você estiver escrevendo um script portátil, não confie no seu próprio man find
, porque existem muitos sistemas com o BSD find
, que tem um conjunto de recursos diferente . Se você estiver escrevendo scripts para o busybox, descobrirá que existem versões diferentes com nc
s totalmente diferentes. Esses são os tipos de coisas que sempre me afetam quando eu implemento um script em diferentes ambientes.
Para ler mais sobre boas práticas de script de shell, há também um bom recurso no blog de David Pashley: Escrevendo Scripts Robustos de Bash Shell
Além disso, leia Gilles respostas e comentários neste site. Ele tem muitas dicas sobre como usar o código portátil.