Hay potencialmente dos preguntas aquí:
Para la primera pregunta:
Sí, siempre que los scripts sean ejecutados por los intérpretes de shell para los que fueron escritos. Tenga en cuenta que no importa qué shell use para el trabajo interactivo , siempre que los scripts tengan líneas#!
-adecuadas y/o se ejecuten con intérpretes explícitos (, p.ksh myscript
).
Un script funciona como un comando que usted (o alguien más )escribió. Otro script podría llamarlo sin importar en qué idioma se escribió (suponiendo que sea ejecutable y tenga una#!
-línea )correcta.
Para el segundo:
Si escribe sus scripts usando solo el mínimo común denominador en términos de sintaxis y gramática (que en el caso de estos tres shells es POSIX sh
), puede estar bastante seguro de que se ejecutará bajo todos estos shells (pero supongo que puede haber casos extremos en los que puede faltar la conformidad POSIX de un shell ). Pero, ¿por qué tendría zsh
o ksh
ejecutar un script sh
cuando podría ejecutarlo con /bin/sh
?
ksh93
ybash
(y posiblemente zsh
también, pero no estoy muy versado en que el caparazón)ofrece bastante similitud en sus extensiones al plano sh
, pero hay situaciones en las que aunque la sintaxis y la semántica aparentemente están de acuerdo, surgen problemas extraños de otras diferencias .
En el caso general, no, no puede asumir que un shell podrá ejecutar con éxito y correctamente un script escrito para otro shell. Por ejemplo, un script bash
podría usar un script ksh
como si fuera cualquier otro comando,pero nunca debería source
un script ksh
.
Idealmente, debe asumir que los diferentes shells son lenguajes de secuencias de comandos completamente diferentes y escribir para un shell en particular, tal como no escribiría una pieza de código de Python y esperaría que se ejecutara en Perl o Ruby. (a menos que fuera alguna escritura políglota inventada).