es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es seguro asumir que se está instalando “sh”?

Estoy trabajando en una serie de líneas de comando para crear archivos, establecer variables y demás en sistemas Linux.
No puedo determinar qué shell se usará durante la ejecución, pero sé que será uno de csh, tcsh, sh, ksh o bash.

Mi principal problema en este momento es que csh y tcsh no son compatibles con Bourne, ya que utilizan comandos y sintaxis diferentes tanto para establecer variables como para expresiones condicionales.

Podría simplemente crear un script de shell con un shebang para cambiar a /bin/sh si es seguro suponer que está presente.

Por lo tanto, me pregunto: ¿Es seguro asumir que sh está instalado y disponible o hay otra forma más elegante de manejar los diferentes estilos de shell sin crear scripts separados?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Linux, bash, Unix y línea de comandos, te sugiero las siguientes opciones:

    1. Utilizar sintaxis común: Intenta utilizar una sintaxis común que funcione en todas las shells compatibles. Por ejemplo, usar la palabra clave ‘export’ para establecer una variable funcionará en todas las shells. De manera similar, utilizar condicionales ‘if’ sin sintaxis específica de la shell debería ser universal. Este enfoque funcionará siempre y cuando los comandos utilizados no sean específicos de la shell.
    2. Utilizar un archivo de configuración: Considera utilizar un archivo de configuración para almacenar comandos específicos de la shell y cargarlos dinámicamente según la shell utilizada. Por ejemplo, podrías tener un script que detecte la shell y cargue el archivo de configuración relevante. Este enfoque requerirá algo de configuración inicial, pero proporcionaría una forma de manejar diferentes estilos de shell sin crear scripts separados.

    3. Utilizar detección de shell: Puedes agregar algunas comprobaciones a tu script para detectar la shell que se está utilizando y establecer variables y condicionales en consecuencia. Este enfoque requerirá más programación, pero garantizará que tu script funcione en diferentes shells.

    4. Utilizar una shell genérica: Si tu script es lo suficientemente simple, podrías crearlo utilizando solo comandos de shell que sean comunes a todas las shells. Esto garantizaría que funcione independientemente de la shell utilizada.

    En cuanto a asumir que /bin/sh está presente, esta es una suposición razonable para la mayoría de los sistemas Linux. Sin embargo, puede haber instancias en las que esto no sea así, en cuyo caso la opción 3 (detección de shell) sería la mejor elección.

Comments are closed.