quel bash s'exécute?

Je pense que j'ai configuré bash comme shell, mais pourquoi cela se passe-t-il?

Ma coquille est bash:

# ls -al `which sh` lrwxrwxrwx 1 root root 4 Jul 12 03:25 /bin/sh -> bash 

Erreur lors de l'exécution d'un script avec sh

 # sh ubuntu/util.sh ubuntu/util.sh: line 32: `test-build-release': not a valid identifier 

Aucune erreur de bash

 # bash ubuntu/util.sh 

Il exécute l'exécutable bash que vous attendez, mais votre shell n'est pas simplement bash; il fonctionne en mode de compatibilité POSIX sh . Pour ce faire, il consulte le nom de la command appelée, et si c'est le cas, il active automatiquement le mode POSIX. Cela fait un très mauvais travail et ne devrait pas être entièrement utilisé pour tester les scripts compatibles POSIX sh , mais cela devrait considérablement restreindre la syntaxe autorisée.

–posix

Changez le comportement de bash où l'opération par défaut diffère du standard POSIX pour correspondre au standard (mode posix). Voir VOIR AUSSI ci-dessous pour une reference à un document qui détaille comment le mode posix affecte le comportement de bash.

Et à partir de http://tiswww.case.edu/php/chet/bash/POSIX :

Le fait de démarrer Bash avec l'option de command line --posix ou d'exécuter set -o posix pendant l'exécution de Bash fera en sorte que Bash se conformera plus étroitement au standard POSIX en modifiant le comportement correspondant à celui spécifié par POSIX dans les zones où le Bash diffère.

Lorsqu'il est appelé sh , Bash passe en mode POSIX après avoir lu les files de démarrage.