Passer de zsh à bash sous OSX, et vice-versa?

194

J'apprends donc à développer dans Rails et j'ai découvert la puissance de zsh. Cependant, pour certaines de mes autres tâches, je souhaite utiliser Bash normal. Bien qu'ils soient identiques, je me sens juste à l'aise avec la disposition de bash dans certaines situations. Comment faire des allers-retours ou activer et désactiver zsh? Merci!

vpoola88
la source

Réponses:

382

Vous pouvez simplement utiliser execpour remplacer votre shell actuel par un nouveau shell:

Passer à bash:

exec bash

Passer à zsh:

exec zsh

Cela n'affectera pas les nouvelles fenêtres de terminal ou quoi que ce soit, mais c'est pratique.

larsks
la source
1
Vous êtes les bienvenus! Si vous êtes satisfait de cette réponse, veuillez prendre un moment pour la marquer comme acceptée en cochant la case à gauche de la réponse. Merci!
larsks
1
Ou, invoquez simplement zsh, et lorsque vous avez terminé, exitrevenez à bash. L'exécuter semble inutile et indésirable.
Chris Page
Tout dépend de ce que vous attendez de la fenêtre de votre terminal lorsque vous quittez. Je trouve moi-même le démarrage d'un sous-shell inutile et indésirable.
larsks
2
Comment changez-vous la valeur par défaut? De plus, quand je fais "exec bash" dans zsh, il ne génère pas mon bash_profile.
kalehv
1
Il y a des moments où je veux utiliser zsh et d'autres fois où cela interfère avec ce que je veux faire. Définir la valeur par défaut dans les deux sens est une mauvaise idée, c'est donc la solution parfaite !!! gloire!!
Bob Roberts
126

vous pouvez essayer chsh -s /bin/bashde définir le bash comme valeur par défaut ou chsh -s /bin/zshde définir le zsh comme valeur par défaut.

Wanghao
la source
54

Je bascule assez fréquemment entre zsh et bash. Pendant un certain temps, j'avais l'habitude de générer mon bash_profile à chaque commutateur. Puis j'ai découvert que vous pouvez (généralement) faire

exec bash --login

ou juste

exec bash -l
phil-ociraptor
la source
1
Merci phill, j'ai installé thinkbot / laptop et ça gâche toutes mes configs. Votre astuce aide à retrouver mon environnement bash.
Seralto
1
Serait-il utile que vous ayez écrit à quoi sert "--login"?
Ewoks
Make bash act as if it had been invoked as a login shell (see INVOCATION below). Source
lony
16

s'il ne s'agit que d'un interrupteur temporaire

vous pouvez utiliser exec comme mentionné ci-dessus, mais pour plus d'une solution permanente.

vous pouvez utiliser chsh -s / bin / bash (pour passer à bash) et chsh -s / bin / zsh (pour passer à zsh)

Rahil
la source
12

Pour Bash, essayez

chsh -s $(which bash)

Pour zsh, essayez

chsh -s $(which zsh)
comme si
la source
6

zsh a une commande intégrée emulatequi peut émuler différents shells en définissant les options appropriées, bien que csh ne soit jamais entièrement émulé.

emulate bash
perform commands
emulate -R zsh

L'indicateur -R restaure toutes les options à leurs valeurs par défaut pour ce shell.

Voir: manuel zsh

ljcusack
la source
1
Vous ne savez pas quelle version de bash il émulera, émulera-t-il bash 4.x? ou 5.x?
Edgar Aroutiounian
2

Vous devriez pouvoir simplement taper bashdans le terminal pour passer à bash, puis taper zshpour passer à zsh. Fonctionne au moins pour moi.

Paul Jurczyk
la source
C'est encore plus simple.
andromeda
2
Cela fonctionne, mais à chaque fois que vous tapez zshou bashque vous entrez dans un sous-shell (sous-processus sous le shell actuel). Vous devrez taper exit plusieurs fois pour revenir au shell le plus haut.
RichVel
1

Dans Mac OS Catalina, le shell interactif par défaut est zsh. Pour changer le shell en zsh de bash:

chsh -s /bin/zsh

Ensuite, vous devez entrer votre mot de passe Mac. Quittez le terminal et rouvrez-le. Pour vérifier s'il a été correctement changé en ssh, exécutez la commande suivante.

echo $SHELL

Si le résultat est / bin / zsh, votre tâche est terminée.

Pour le modifier à nouveau en bash, exécutez la commande suivante sur le terminal.

chsh -s /bin/bash

Vérifiez-le à nouveau en utilisant echo $SHELL. Le résultat devrait alors être / bin / bash.

Randil Tennakoon
la source
0

vous pouvez simplement taper bashou si vous voulez toujours utiliser bash:

sur "iTerm2"

  • Allez dans préférences> Profils> Commande
  • Sélectionnez "Commande" dans le menu déroulant
  • Type bash

Testez en fermant iTerm et ouvrez-le à nouveau

Sarah A
la source
-5

Vous pouvez facilement revenir à bash en utilisant la commande "bye"

Rajani
la source
bye quittera zsh mais ne reviendra pas à bash
Cece Dong - MSFT