J'ai des difficultés à changer la valeur de $SHELL
l'application iTerm d'OSX. iTerm démarre /bin/zsh
, mais la valeur de $SHELL
ne semble pas changer.
Ce que j'ai fait:
- Modification de la "commande" comme
/bin/zsh
dans la fenêtre de configuration d'iTerm. - Exécuté
chsh
pour changer le shell en/bin/zsh
. - ITerm confirmé a démarré en
/bin/zsh
REMARQUE # 1: Dans l'application de terminal stock OSX, "Terminal.app":
echo $SHELL
/bin/zsh
REMARQUE # 2: Dans l'application de terminal populaire d'OSX, "iTerm.app":
$ echo $SHELL
/bin/bash
$ echo $USER
$ melvkim
$ chsh -s /bin/zsh
Changing shell for melvkim.
Password for melvkim:
chsh: no changes made
/etc/shells
? Le manuel indique que si le shell que vous spécifiez n'est pas dans ce fichier, il n'est pas considéré comme un shell standard.Réponses:
Le problème était les paramètres conflictuels de l'application "iTerm" avec le shell. Pour résoudre ce problème, j'ai réinitialisé la commande "login shell" dans la fenêtre de préférence iTerm:
Ensuite, j'ai exécuté
chsh
pour le modifier en tant que/bin/zsh
.Pour reproduire le problème (avec $ SHELL défini comme
/bin/bash/
, même si le shell de connexion l'est/bin/zsh
), je devais juste changer le paramètre "iTerm" en "Command: / bin / zsh /".la source
L'
-s
indicateur pourchsh
seulement tente de changer le shell, et échoue probablement à cause d'Open Directory: le système UNIX habituel 'chsh' modifierait l'/etc/passwd
entrée. Cependant, j'ai pu exécuterchsh
sans arguments, ce qui m'a donné un éditeur et les informations suivantes:J'ai pu modifier l'entrée "Shell:" dans
/bin/zsh
, et les fenêtres de terminal suivantes se sont ouvertes avec une invite Z-shell.la source
chsh
sans argument. Toujours pas de chance. La variable ne change pas. En fait, lorsque l'éditeur a été chargé, il l'a montré/bin/zsh
.$SHELL
sur iTerm. Veuillez vous référer à ma réponse pour plus de détails .. Merci!Recherchez ici l'excellente explication et solution publiée par @ mklement0 [en relation avec un
bash
problème de mise à niveau.J'ai eu un problème similaire en faisant le contraire sur mon système (OS X 10.10.1): refaire
bash
le shell de connexion par défaut après avoir installéoh-my-zsh
, ce qui a faitzsh
la valeur par défaut, puis passerbash
de 3.2.53 à 4.3.30 en utilisant Homebrew ( pourquoi Apple expédie Yosemite avec une anciennebash
version?).Je pense que la
SHELL
variable d'environnement reflète mais ne contrôle pas le shell de connexion par défaut réel pour l'utilisateur. Par exemple, si, par exemple,bash
était votre valeur par défaut et que vous ouvrez une nouvellebash
fenêtre de shell à partir du terminal, alors$ export SHELL="/bin/zsh"; echo "$SHELL"
apparaîtra/bin/zsh
mais aucun changement réel ne se produira parce que si vous ouvrez une nouvelle fenêtre de shell à partir du terminal et faites-$ echo $0
le, vous verrez-bash
($0
contient le nom et le chemin de la commande qui a démarré la fenêtre du shell, dans ce casbash
, et le-
suivant indique qu'il s'agit d'un shell de connexion).Comme @ mklement0 l'a souligné, le shell de connexion par défaut réel pour l'utilisateur est contrôlé par la
UserShell
propriété dans l'enregistrement de l'utilisateur dans la base de données interne du système - cela peut être interrogé et mis à jour à l'aide de l'utilitaire de ligne de commandedscl
. Ces informations seront transmises à votre application de terminal lorsque vous ouvrez une fenêtre shell.Qu'est
chsh -s /bin/zsh
- ce que c'est de changer cetteUserShell
propriété pour la définirzsh
- vous pouvez le vérifier en faisantdscl . -read /Users/$USER/ UserShell
immédiatement après, et vous verrezUserShell: /bin/zsh
. Mais la modification n'est pas effectuée dans la fenêtre actuelle, jusqu'à ce que vous fassiez quelque chose commeexec su - $USER
suggéré par @ mklement0, ou jusqu'à ce que vous fermiez et ouvriez une fenêtre shell.la source
Essayez d'exécuter la commande:
chsh -s /bin/zsh
depuis le terminal Mac par défaut.la source