Solo trato de aprender un poco las secuencias de comandos bash. Mi vieja versión bash:
Bash version 3.2.53(1)-release...
He actualizado mi bash en mac os x yosemite con homebrew:
brew update
brew install bash
Luego, en las propiedades del terminal, cambié la ruta estándar del shell de /bin/bash
a /usr/local/bin/bash
(Según tengo entendido, aquí es donde el homebrew instala el bash actualizado).
Luego verifiqué el resultado nuevamente (y parece que todo está bien):
$ echo $BASH_VERSION
Bash version 4.0.33(0)-release...
Pero cuando estaba tratando de escribir un script bash simple:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "Welcome $i times"
done
EL RESULTADO ES:
Bash version 3.2.53(1)-release...
Welcome {0..10..2} times
EN LUGAR DE:
Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times
¿Por qué la versión de Bash vuelve a cambiar a la anterior cuando intento ejecutar el script en el mismo shell? ¡Esto me asusta! Por favor, alguien me explique cuál es mi problema)))
fuente
sh
dentro/bin
.brew
tal vez no hizo un enlace simbólico parabash
llamadosh
. Con su$PATH
conjunto correctamente, intente iniciar de esta manera:bash script.sh
.#!/usr/bin/env bash
Instalar nuevo bash:
Haga de este el shell predeterminado:
Establecer el entorno en un script:
El uso
env
buscará Bash en tu$PATH
y usará el primero que encuentre. Puede ver cuálbash
usará escribiendowhich bash
. Si se está viendo/bin/bash
en primer lugar, tendrá que configurar su$PATH
en~/.bashrc
y/.bash_profile
.fuente
chsh
, deberá actualizar / etc / shells .Como pjv señaló, realmente deberías usar
en tus scripts en todas partes para ser portátil. Por ejemplo, si intentas ejecutar tu script con
fallará en la mayoría de los sistemas Linux.
fuente