Greg's Wiki tiene una publicación sobre la adaptación de los scripts de bash para Dash que señala muchos 'bashismos', características adicionales que no son estándar pero son parte de bash. Evitar esos bashisms puede ayudar a que su script sea más amigable para diferentes entornos. Esto responde particularmente a algunas de sus preguntas. Por ejemplo, sí, hay operadores que difieren (como ==
), pero hay un conjunto estándar de Posix que debería funcionar en todos los entornos.
Para una lectura más completa, puede consultar el estándar Posix , que todos los shells deben cumplir. Particularmente, el volumen en "Shell y utilidades".
Lo que encuentro más desafiante que las diferencias de shell son las diferencias de comando. Muchos sistemas Linux tienen GNU find
, pero si estás escribiendo un script portátil, no confíes en el tuyo man find
, porque hay muchos sistemas con BSD find
, que tiene un conjunto de características diferente. Si está escribiendo scripts para busybox, encontrará que hay diferentes versiones con nc
s completamente diferentes . Esas son las cosas que siempre me atrapan cuando implemento un script en diferentes entornos.
Para leer más sobre las buenas prácticas de scripting de shell, también hay un buen recurso en el blog de David Pashley: Escritura de scripts robustos de Bash Shell
Además, asegúrese de leer las respuestas y comentarios de Gilles en este sitio. Tiene muchos consejos sobre cómo asegurarse de que use un código portátil.