Diferencia entre Sh y Bash

Fumbani Banda 30 enero 2023
  1. ¿Qué es un shell?
  2. Cómo encontrar el shell actual
  3. Cómo encontrar las carcasas disponibles
  4. El comando sh y su uso
  5. Bash y su uso
Diferencia entre Sh y Bash

Este tutorial explica qué es un shell, conociendo el shell utilizado actualmente, comprobando la lista de todos los shells disponibles y la diferencia entre sh y bash.

¿Qué es un shell?

Un shell es un programa de computadora que recibe comandos. También interpreta los comandos y los pasa al sistema operativo para su procesamiento. Actúa como una interfaz entre el usuario y el sistema operativo, a través de la cual el usuario puede interactuar con el sistema operativo.

La mayoría de los sistemas operativos Linux vienen con al menos un programa de shell único. El programa de shell será Bash, Dash o ambos.

Cómo encontrar el shell actual

Para conocer el shell que se está utilizando actualmente en un sistema Linux, podemos leer el archivo /etc/passwd porque almacena la información de la cuenta del usuario. Ejecutemos el siguiente comando para conocer el shell actual.

El comando grep se usa para buscar una cadena de caracteres en un archivo específico. El siguiente comando busca el usuario fumba en el archivo passwd ubicado en /etc. Cuando el comando grep encuentra una coincidencia, imprime la línea con el resultado.

$ grep fumba /etc/passwd

Podemos ver en la salida a continuación que el shell predeterminado para el usuario fumba es bash.

fumba:x:1000:1000:,,,:/home/fumba:/bin/bash

Cómo encontrar las carcasas disponibles

Todos los shells disponibles en los sistemas Linux se enumeran en el archivo /etc/shells. Usamos el comando cat a continuación para mostrar el contenido del archivo /etc/shells.

cat /etc/shells

El resultado a continuación muestra la lista de todos los shells disponibles en nuestro sistema.

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

El comando sh y su uso

sh es un nombre de comando para el shell Bourne. Es el intérprete de lenguaje de comandos estándar para sistemas operativos similares a Unix. Ejecuta comandos desde una cadena de línea de comandos, la entrada estándar o un archivo especificado. sh cumple con los estándares POSIX.

La interfaz de sistema operativo portátil (POSIX) es una familia de estándares especificados por IEEE Computer Society para mantener la compatibilidad entre sistemas operativos. Estos estándares ayudan a desarrollar software multiplataforma para múltiples sistemas operativos una vez que se siguen los estándares.

La mayoría de los sistemas tienen el archivo /bin/sh, pero es un enlace simbólico y no invocará a sh. En Ubuntu, /bin/sh es un enlace simbólico al shell Dash. Podemos verificar ejecutando el siguiente comando.

$ file -h /bin/sh

El resultado a continuación muestra que /bin/sh es un enlace simbólico a guión.

/bin/sh: symbolic link to dash

Agreguemos #!/bin/sh a un script.

#!/bin/sh

printf "sh points to dash!\n"

El script anterior especifica /bin/sh como intérprete. Sin embargo, dado que /bin/sh apunta a dash, el shell dash ejecutará el script como intérprete.

Bash y su uso

Bash son las siglas de Bourne Again shell. Como sh, es un procesador de lenguaje de comandos y un shell. Sin embargo, bash es un superconjunto de sh. Es compatible con las funciones de sh y proporciona más extensiones y funciones. Bash es el shell predeterminado para los sistemas operativos Linux.

Al principio, Bash se ajustaba a los estándares POSIX, pero dejó de seguir los estándares POSIX con el tiempo a medida que se añadían más funciones y extensiones. Sin embargo, bash aún se puede usar en modo POSIX configurando el indicador -posix, como se muestra a continuación.

$ bash --posix

Escribamos un script bash que se ajuste al estándar POSIX.

#!/bin/bash

set -o posix
printf "we are using bash shell!\n"

El intérprete bash ejecutará el script anterior ya que se ha especificado en la primera línea, #!/bin/bash.

El comando set habilita opciones en el script. En nuestro caso, permite que el shell bash ejecute el script en modo POSIX.

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Artículo relacionado - Linux Shell

Artículo relacionado - Linux Bash