O Wiki de Greg tem um post sobre a adaptação de scripts bash para o Dash, que aponta muitos 'bashisms' - recursos extras que não são padrão, mas fazem parte do bash. Evitar esses basismos pode ajudar a tornar seu script mais amigável para diferentes ambientes. Isso responde particularmente a algumas de suas perguntas. Por exemplo, sim, existem operadores que diferem (gostam ==
), mas há um conjunto Posix padrão que deve funcionar em todos os ambientes.
Para uma leitura mais completa, você pode conferir o padrão Posix , ao qual todas as conchas devem estar em conformidade. Particularmente, o volume em "Shell & Utilities".
O que acho mais desafiador do que as diferenças de shell são as diferenças de comando. Muitos sistemas Linux têm GNU find
, mas se você estiver escrevendo um script portátil, não confie em si próprio man find
, porque existem muitos sistemas por aí com o BSD find
, que possui um conjunto de recursos diferentes. Se você estiver escrevendo scripts para o busybox, verá que existem versões diferentes com nc
s totalmente diferentes . Esse é o tipo de coisa que sempre me ocorre quando implanto um script em ambientes diferentes.
Para uma leitura extra sobre boas práticas de script de shell, também há um bom recurso no blog de David Pashley: Escrevendo scripts robustos para shell Bash
Leia também as respostas e comentários de Gilles neste site. Ele tem muitas dicas sobre como usar o código portátil.