Yo creía que bash y sh eran lo mismo, pero con Debian 12 stable, vi cosas que me dieron a entender que no era así.
#!/bin/sh
Supuestamente llama a sh, cuando se le hizo al archivo
chmod +x "name file"
Y, ese sh, me tira errores, pero cuando puse
#!/bin/bash
Esos errores que me daba dejaban de aparecer.
¿Alguien sabe más de interpretes de terminal para explicar más a fondo esto?
De tener dos interpretes de terminal a la vez en el sistema.
Es cómo que sh es una version simplificada de bash
1 me gusta
Hasta donde sé la mayoría de distros usan un symlink para sh, normalmente a la misma bash, pero otras distros como Debian o Void usan dash, que es una shell muy minimalista y no tiene muchas cosas que son exclusivas de bash, por esto muchos scripts pueden llegar a fallar.
La distro que utilizo usa dash como /bin/sh por usar un ejemplo.

4 Me gusta
marco@marco:~$ ls -l /usr/bin/sh
lrwxrwxrwx 1 root root 4 ene 5 2023 /usr/bin/sh -> dash
marco@marco:~$ ls -l /usr/bin/bash
-rwxr-xr-x 1 root root 1265648 abr 18 19:47 /usr/bin/bash
Parece que la mía también usa dask, aunque no se mi otro sistema (Arch).
Pero bash usa bash, y sh usa dash.
Gracias.
2 Me gusta
Por lo que tengo entendido, sh por lo general es un symlink para los shells POSIX-complaint.
No sabría por qué se usa de enlace simbólico a otro shell, ya que en mi caso uso chsh para cambiar de shell, yo tengo a sh de enlace simbólico a busybox, por ejemplo.
Buenas, aquí te lo explican.
Un saludo
Lo mejor es emplear env para mayor compatibilidad y no llamar directamente al binario. No en todas las distribuciones los binarios se encuentran en la misma carpeta.
#!/usr/bin/env bash