17 votes

Comment changer le shell par défaut dans iTerm ?

J'ai des difficultés à modifier la valeur de l'élément suivant $SHELL dans l'application iTerm d'OSX. iTerm commence en /bin/zsh mais la valeur de $SHELL ne semble pas changer.

Ce que j'ai fait :

  1. Changer "commande" en /bin/zsh dans la fenêtre de configuration de l'iTerm.
  2. Exécuté chsh pour changer le shell en /bin/zsh .
  3. Confirmé iTerm est lancé dans /bin/zsh

NOTE #1 : Dans l'application de terminal d'OSX, "Terminal.app" :

echo $SHELL
/bin/zsh

NOTE #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

1 votes

Avez-vous regardé dans /etc/shells ? Le manuel indique que si l'interpréteur de commandes que vous spécifiez n'est pas dans ce fichier, il n'est pas considéré comme un interpréteur de commandes standard.

0 votes

Votre vrai problème n'est pas de changer le $SHELL, mais votre véritable shell par défaut en iTerm . La variable est construite au shell de connexion à partir du shell par défaut utilisé par iTerm .

0 votes

Pourriez-vous marquer votre réponse comme correcte pour marquer la question comme répondue ? Vous pouvez marquer votre propre réponse comme étant une solution. Merci !

10voto

Jack M Points 2678

Le problème était le conflit entre l'application "iTerm" et le shell. Pour résoudre le problème, j'ai réinitialisé la commande "login shell" dans la fenêtre des préférences de iTerm :

iTerm.app -> Préférences -> Profils -> Général -> Commande -> Cliquez sur "Login shell".

Ensuite, j'ai exécuté chsh pour le modifier comme /bin/zsh .

Pour reproduire le problème (avec $SHELL en tant que /bin/bash/ même si le shell de connexion est /bin/zsh ), j'ai juste eu à changer le paramètre "iTerm" en "Command : /bin/zsh/".

0 votes

Un de mes amis a eu le même problème avec intelliJ.

0 votes

Re : "iTerm.app -> Préférences". Je suis un utilisateur de longue date de Linux (d'où ma présence ici) mais je suis nouveau sur iOs. Je n'arrive pas à trouver cette instruction. Des conseils supplémentaires seraient appréciés. Je veux vraiment bash dans IOs !

1 votes

@StephenHosking avec l'iTerm actif, faites CMD + , pour accéder à Préférences

5voto

Michael Points 336

J'ai eu un problème similaire mais j'ai l'a résolu en exécutant la commande chsh -s /bin/zsh dans le terminal, puis a navigué vers

Terminal -> Préférences -> Fenêtre générale

et a modifié le Les coquilles s'ouvrent avec : option pour Shell de connexion par défaut tandis que le commande (chemin complet) réglé sur /bin/zsh Cela devrait résoudre votre problème.

0 votes

C'était mon problème et cela l'a résolu. Merci

2voto

MGlacier Points 2220

Regardez aquí pour l'excellente explication et solution postées par @mklement0 [en relation avec une bash problème de mise à niveau.

J'ai eu un problème similaire en faisant l'inverse sur mon système (OS X 10.10.1) : en faisant bash le shell de connexion par défaut après avoir installé oh-my-zsh qui a fait zsh la valeur par défaut, puis la mise à niveau bash de la 3.2.53 à la 4.3.30 en utilisant Homebrew (pourquoi Apple livre-t-il Yosemite avec une ancienne version de la bash version ?).

Je pense que le SHELL reflète la variable d'environnement mais ne pas contrôle le shell de connexion par défaut de l'utilisateur. Par exemple, si, disons, bash était votre valeur par défaut et vous ouvrez une nouvelle bash fenêtre shell à partir du terminal puis $ export SHELL="/bin/zsh"; echo "$SHELL" montrerait /bin/zsh mais aucun changement réel ne se produira, car si vous ouvrez une nouvelle fenêtre shell à partir du terminal et faites $ echo $0 alors vous verrez -bash ( $0 contient le nom et le chemin de la commande qui a lancé la fenêtre du shell, dans ce cas-ci bash et le - à côté d'elle indique qu'il s'agit d'un shell de connexion).

Comme @mklement0 l'a souligné, le shell de connexion par défaut de l'utilisateur est contrôlé par l'option UserShell la propriété de l'enregistrement de l'utilisateur dans la base de données interne du système, qui peut être interrogée et mise à jour à l'aide de l'utilitaire de ligne de commande. dscl . Ces informations seront transmises à votre application terminal lorsque vous ouvrirez une fenêtre shell.

Quoi chsh -s /bin/zsh fait est de changer ceci UserShell pour la définir comme zsh - vous pouvez le vérifier en faisant dscl . -read /Users/$USER/ UserShell immédiatement après, et vous verrez UserShell: /bin/zsh . Mais le changement est pas dans la fenêtre actuelle, jusqu'à ce que vous fassiez quelque chose comme exec su - $USER comme suggéré par @mklement0, ou jusqu'à ce que vous fermiez et ouvriez une fenêtre shell.

2voto

mohitmayank Points 121

Essayez d'exécuter la commande : chsh -s /bin/zsh à partir du terminal Mac par défaut.

1 votes

En quoi cela diffère-t-il de l'OP ?

0 votes

@JMY1000 Si vous essayez d'exécuter cette commande depuis iTerm, les changements ne sont pas pris en compte. Vous devriez pouvoir le faire fonctionner en l'exécutant depuis le terminal par défaut du Mac.

1voto

Nevin Williams Points 111

En -s pour chsh tente seulement de changer le shell, et échoue probablement à cause de l'Open Directory : Le système UNIX habituel, 'chsh', modifierait l'adresse /etc/passwd entrée. Cependant, j'ai pu exécuter chsh sans arguments, ce qui m'a donné un éditeur, et les informations suivantes :

# Changing user information for nevin.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Shell: /bin/tcsh
Full Name: Nevin Williams
Office Location:
Office Phone:
Home Phone:

J'ai pu modifier l'entrée "Shell :" en /bin/zsh et les fenêtres de terminal suivantes s'ouvrent avec une invite Z-shell.

0 votes

J'ai essayé chsh sans argument. Toujours pas de chance. La variable ne change pas. En fait, lorsque l'éditeur était chargé, il affichait /bin/zsh .

0 votes

Essayez de changer le shell avec l'éditeur. J'ai fait une capture d'écran de moi passant de /bin/tcsh à /bin/zsh et inversement. bonmot.ca/~nevin/chsh.mov

0 votes

Merci beaucoup d'avoir pris le temps d'enregistrer votre screencast ! Votre solution est censée fonctionner sur d'autres émulateurs de terminaux, mais je n'ai pas pu changer le nom de l'émulateur. $SHELL sur iTerm. Veuillez vous référer à ma réponse pour plus de détails Merci !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X