web-dev-qa-db-fra.com

Comment faire en sorte que zsh s'exécute en tant que shell de connexion sous Mac OS X (dans iTerm)?

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?

145
Ivan Tarasov
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.

220
Damien Wilson

Dans iTerm -> Préférences -> Onglet Profils -> Section générale, définissez la commande sur:/bin/zsh --login

/bin/zsh --login

100
Harold Putman

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 [~ # ~]

57
Arunkumar

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
20
hasanain

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).

19
Brian Agnew

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é.

0
Jonny Brooks

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.

0
Robin Klose