Cómo cambiar el comando 'sh' para ejecutar scripts en bash 4

0

He instalado bash 4 con Homebred y bash --version me muestra la versión 4.

Si tengo el siguiente script de prueba:

#!/usr/local/bin/bash
# test-version.sh
echo $BASH_VERSION

Y lo hago ejecutable chmod +x configurer.sh y lo ejecuto ./test-version.sh También obtengo la versión 4.

Pero si lo ejecuto con el comando sh comando sh test-version.sh obtengo la versión 3.

He puesto el nuevo shell en /etc/shells :

sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'

Y cambiado a la nueva shell:

 chsh -s /usr/local/bin/bash

También cambié la ruta en Configuración de iTerm > Perfiles > Comando a /usr/local/bin/bash .

¡Gracias!

EDITAR: me he dado cuenta de que es bueno dejar a sh solo. Cuando desee ejecutar scripts con Bash 4, simplemente no use sh .

    
pregunta any_h 25.10.2018 - 08:12

2 respuestas

1

Usé homebrew para instalar BASH4 y siempre uso shebang #!/bin/bash . Esto me funciona tanto con los estilos sh y ./ de correr.

    
respondido por el TrainedMusician 25.10.2018 - 11:12
-1

Una solución simple si solo quieres poder escribir "sh" y hacer que ejecute el nuevo bash es crear un enlace como este:

ln -s /usr/local/bin/bash /usr/local/bin/sh

Esto no te ayudará si tienes, por ejemplo, secuencias de comandos que comienzan con #! / bin / sh o similar.

Para cambiar ese sh, deberá copiar el archivo / usr / local / bin / bash para sobrescribir / bin / sh, de esta forma:

  cp /usr/local/bin/bash /bin/sh

o crea un enlace entre los dos:

  ln -sf /usr/local/bin/Bash /bin/sh

Realice una copia de seguridad del binario sh antes de hacerlo.

Sin embargo, recomendaría dejar "sh" solo ya que es el shell del sistema utilizado durante el arranque, el apagado y el sistema en general. A pesar de que la versión más reciente de bash es en gran medida compatible, sería aburrido si el arranque falla ahora o después de una actualización del sistema operativo porque ha sustituido el shell.     

respondido por el jksoegaard 25.10.2018 - 09:32

Lea otras preguntas en las etiquetas