Lorsque zsh est défini en tant que shell de connexion sous Mac OS X, lorsqu'il est lancé par iTerm, zsh ne considère pas qu'il est exécuté en tant que shell de connexion, bien qu'il soit démarré en tant que "-zsh" ("-" est mis en tant que premier caractère de arg [0]), ce qui signifie qu'il devrait commencer par un shell de connexion.
Ainsi, lorsque je règle bash sur le shell de connexion, bash reconnaît ce premier "-" dans $ 0 et s’exécute en tant que shell de connexion, mais pas zsh, bien qu’il semble bien que ce soit le cas.
Existe-t-il un moyen de faire en sorte que zsh reconnaisse le "-" dans arg [0] ou oblige iTerm à exécuter le shell avec un argument de ligne de commande --login?
chsh -s $(which zsh)
Votre mot de passe vous sera demandé, mais une fois que vous aurez mis à jour vos paramètres, les nouvelles sessions iTerm/Terminal que vous démarrez sur cet ordinateur utiliseront par défaut zsh.
Dans iTerm -> Préférences -> Onglet Profils -> Section générale, définissez la commande sur:/bin/zsh --login
Accédez au panneau Utilisateurs et groupes du panneau ) -> Sélectionnez l'utilisateur -> Cliquez sur le verrou pour effectuer des modifications ( coin inférieur gauche) -> cliquez à droite sur l'utilisateur actuel, sélectionnez Options avancées ... -> Sélectionnez Login Shell: /bin/zsh et [~ # ~] ok [~ # ~]
La commande pour changer le shell au démarrage est chsh -s <path_to_Shell>
. Les interpréteurs de commandes par défaut de Mac OS X sont installés dans le répertoire bin
. Par conséquent, si vous souhaitez utiliser le paramètre par défaut zsh
, utilisez le programme suivant:
chsh -s /bin/zsh
Si vous utilisez une version différente de zsh
, vous devrez peut-être ajouter cette version à /etc/shells
pour éviter le message non standard de Shell. Par exemple, si vous voulez la version de home-brew de zsh
, vous devez ajouter /usr/local/bin/zsh
au fichier susmentionné que vous pouvez exécuter en une seule commande Sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"
puis courir
chsh -s /usr/local/bin/zsh
Ou si vous voulez tout faire en une seule commande, copiez-la et collez-la si zsh est déjà installé.
Sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" && chsh -s /usr/local/bin/zsh
Avez-vous essayé d’éditer l’entrée Shell dans paramètres du compte .
Allez dans les préférences Comptes, déverrouillez et cliquez avec le bouton droit de la souris sur votre compte d'utilisateur pour afficher la boîte de dialogue Paramètres avancés . Votre shell devrait être/bin/zsh, et vous pouvez éditer cette invocation de manière appropriée (c’est-à-dire ajouter l’argument --login).
La solution qui a fonctionné pour moi est décrite dans ce post intitulé: tilisez Homebrew zsh au lieu de la valeur par défaut d’OS X .
La solution consistait à exécuter la commande suivante dans le terminal
Sudo dscl . -create /Users/$USER UserShell /usr/local/bin/zsh
Ensuite, vous devez taper votre mot de passe et le tour est joué.
Utilisez l'utilitaire login
pour créer un shell de connexion. Supposons que l’utilisateur que vous souhaitez connecter ait le nom d’utilisateur Alice et que zsh est installé dans /opt/local/bin/zsh
_ (par exemple, une version plus récente installée via MacPorts). Dans iTerm 2, allez dans Préférences, Profils, sélectionnez le profil que vous souhaitez configurer, puis entrez Commande:
login -pfq Alice /opt/local/bin/zsh
Voir man login
pour plus de détails sur les options.