Inicio > Entorno y utilidades > sh

sh: Ejecución de scripts de shell e interpretación de comandos

`sh` es un intérprete de comandos compatible con Bourne shell. Se utiliza para ejecutar scripts o para recibir e interpretar comandos de forma interactiva. En la mayoría de los sistemas Linux, `/bin/sh` es un enlace simbólico a otro shell como `bash` o `dash`, proporcionando un entorno de ejecución de scripts que cumple con el estándar POSIX.

Descripción general

`sh` es uno de los shells predeterminados en sistemas Unix y Linux, utilizado para la ejecución de scripts y el procesamiento interactivo de comandos. Cumple estrictamente con el estándar POSIX, lo que hace que los scripts escritos para `sh` sean ventajosos para mantener una alta compatibilidad en diversos sistemas.

Características principales

  • Compatibilidad POSIX: Proporciona la base para escribir scripts de shell estándar
  • Ejecución de scripts: Ejecuta secuencias de comandos almacenadas en archivos
  • Interpretación interactiva de comandos: Recibe y procesa comandos directamente del usuario
  • Incluido por defecto en el sistema: Viene preinstalado en la mayoría de los sistemas Unix/Linux

Opciones principales

`sh` ofrece varias opciones que afectan la forma en que se ejecutan los scripts o su depuración.

Ejecución y depuración de scripts

Comando generado:

Combina los comandos.

Descripción:

`sh` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Ejecutar archivo de script

sh my_script.sh

Ejecuta un archivo de script de shell especificado usando `sh`.

Ejecutar cadena de comandos directamente

sh -c "echo 'Hello from sh!' && ls -l"

Ejecuta una cadena de comandos entre comillas usando `sh` con la opción `-c`.

Ejecutar script en modo de depuración

sh -x debug_script.sh

Depura un script rastreando su proceso de ejecución con la opción `-x`.

Ejecutar comandos desde la entrada estándar

echo "ls -a" | sh

Ejecuta comandos pasados a través de una tubería usando `sh`.

Salir inmediatamente en caso de error

sh -e error_prone_script.sh

Configura el script para que termine inmediatamente si ocurre un error.

Consejos y precauciones

`sh` es una herramienta potente, pero es importante comprender sus diferencias con otros shells.

Al escribir scripts

  • Es recomendable especificar que el script se ejecute con `sh` usando `#!/bin/sh` en la primera línea del script.
  • Las características extendidas de otros shells como `bash` o `zsh` (por ejemplo, arrays, coincidencias de patrones avanzadas, sentencias condicionales `[[ ... ]]`) pueden no funcionar en `sh`, por lo que solo se deben usar sintaxis compatibles con POSIX.
  • La opción `-x` es muy útil para depurar, ya que ayuda a comprender el flujo del script y a verificar los valores de las variables.

Compatibilidad

En la mayoría de las distribuciones de Linux, `/bin/sh` es un enlace simbólico a `dash` (en familias Debian/Ubuntu) o `bash` (en familias Red Hat/Fedora). Por lo tanto, los scripts de `sh` se ejecutan en el modo de compatibilidad POSIX del shell enlazado. Esto significa que pueden comportarse de manera diferente a los scripts de `bash`.


Comandos de la misma categoría