J'essaye juste d'apprendre un peu le script bash. Mon ancienne version bash:
Bash version 3.2.53(1)-release...
J'ai mis à jour mon bash sur mac os x yosemite avec homebrew:
brew update
brew install bash
Puis , dans les propriétés du terminal que j'ai changé le chemin shell standard de /bin/bash
la /usr/local/bin/bash
(Si je comprends bien c'est là le homebrew installe le bash mis à jour).
Ensuite, j'ai vérifié à nouveau le résultat (et il semble que tout soit bon):
$ echo $BASH_VERSION
Bash version 4.0.33(0)-release...
Mais quand j'essayais d'écrire un simple script bash:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "Welcome $i times"
done
LE RÉSULTAT EST:
Bash version 3.2.53(1)-release...
Welcome {0..10..2} times
AU LIEU 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
Pourquoi la version de Bash revient à l'ancienne lorsque j'essaie d'exécuter le script dans le même shell ??? Cela me fait juste paniquer! S'il vous plaît quelqu'un m'explique quel est mon problème)))
la source
sh
y êtes/bin
.brew
peut-être n'a pas fait de lien symbolique pourbash
appelésh
. Avec votre$PATH
jeu correctement, essayez de le démarrer comme ceci:bash script.sh
.#!/usr/bin/env bash
Installez un nouveau bash:
Faites-en le shell par défaut:
Définissez l'environnement dans un script:
L'utilisation
env
cherchera Bash dans votre$PATH
et utilisera le premier qu'il rencontre. Vous pouvez voir lequelbash
il utilisera en tapantwhich bash
. S'il voit d'/bin/bash
abord, vous devrez configurer votre$PATH
entrée~/.bashrc
et/.bash_profile
.la source
chsh
, vous devrez mettre à jour / etc / shells .Comme l'a souligné pjv, vous devez vraiment utiliser
dans vos scripts partout pour être portable. Par exemple, si vous essayez d'exécuter votre script avec
il échouera sur la plupart des systèmes Linux.
la source