Mon objectif est d'exécuter un script, où la ligne shebang provoque l'utilisation de bash. D'une certaine manière, l'exécution de bash exécute toujours zsh pour moi, même si j'ai installé bash 5 en utilisant Homebrew et que Mac (10.15) est livré avec bash 3.
J'aimerais toujours que zsh soit le shell par défaut.
Mon but est d'exécuter les scripts avec bash, et les lignes shebang avec bash me donnent zsh, comme le montre la syntaxe que le scripts reconnaît. L'utilisation de -c
ci-dessous est juste pour faciliter l'illustration (par rapport à un fichier avec shebang).
Voici mes tentatives pour accéder à bash et le contenu de /etc/shells
$ /usr/local/opt/bash/bin/bash -c "echo $SHELL"
/bin/zsh
$ whereis bash
/bin/bash
$ /bin/bash -c "echo $SHELL"
/bin/zsh
$ /bin/bash -c 'echo $SHELL'
/bin/zsh
$ /usr/local/bin/bash -c "echo $SHELL"
/bin/zsh
$ /usr/local/bin/bash -c 'echo $SHELL'
/bin/zsh
$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/usr/local/bin/bash
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
$ /usr/bin/env bash -c "echo $SHELL"
/bin/zsh
$ /bin/bash -c "ps -p $$"
PID TTY TIME CMD
6775 9 ttys011 0:00.31 -zsh
$/usr/local/opt/bash/bin/bash -c "ps -p $$"
PID TTY TIME CMD
69799 ttys001 0:00.38 -zsh
$ /usr/local/bin/bash -c 'ps -p $$'
PID TTY TIME CMD
69985 ttys001 0:00.01 ps -p 69985
$ /bin/bash -c "echo $0"
-zsh
$ /usr/local/opt/bash/bin/bash -c "echo $0"
-zsh
Aussi, j'ai créé le fichier suivant et je l'ai exécuté directement
#!/usr/bin/env bash
# With /bin/bash on the shebang we get the same output
ps -p $$
echo $SHELL
echo $0
echo bash $BASH_VERSION
echo zsh $ZSH_VERSION
Le résultat est :
$ ./bashtest.sh
PID TTY TIME CMD
70188 ttys000 0:00.00 /bin/bash ./bashtest.sh
/bin/zsh
./bashtest.sh
bash 3.2.57(1)-release
zsh