Passare da zsh a bash su OSX e viceversa?


194

Quindi sto imparando a svilupparmi in Rails e ho scoperto il potere di zsh. Tuttavia, per alcune delle mie altre attività, desidero utilizzare Bash normale. Anche se sono uguali, mi sento a mio agio con il lay out di bash in alcune situazioni. Come posso alternare avanti e indietro o accendere e spegnere zsh? Grazie!

Risposte:


382

Puoi semplicemente usare execper sostituire la tua shell corrente con una nuova shell:

Passa a bash:

exec bash

Passa a zsh:

exec zsh

Ciò non influirà sulle nuove finestre del terminale o altro, ma è conveniente.


1
Prego! Se sei soddisfatto di questa risposta, ti preghiamo di dedicare un momento a contrassegnarla come accettata controllando il segno di spunta a sinistra della risposta. Grazie!
Larks

1
Oppure, invoca semplicemente zsh e quando hai finito exitper tornare a bash. Eseguirlo sembra inutile e indesiderabile.
Chris Page

Tutto dipende da cosa ti aspetti che faccia la finestra del tuo terminale quando esci. Trovo che non sia necessario e indesiderabile iniziare una subshell.
Larks

2
Come si modifica l'impostazione predefinita? Inoltre, quando eseguo "exec bash" in zsh, non genera il mio bash_profile.
Kalehv,

1
Ci sono momenti in cui voglio usare zsh e altre volte in cui interferisce con ciò che voglio fare. Impostare il default avanti e indietro è una cattiva idea, quindi questa è la soluzione perfetta !!! complimenti !!
Bob Roberts,

126

puoi provare chsh -s /bin/basha impostare bash come predefinito oppure chsh -s /bin/zshzsh come predefinito.


54

Passo da zsh a bash piuttosto frequentemente. Per un po ', dovevo trovare il mio bash_profile ad ogni passaggio. Poi ho scoperto che puoi (in genere) fare

exec bash --login

o solo

exec bash -l

1
Grazie phill, ho installato thinkbot / laptop e ha rovinato tutte le mie configurazioni. Il tuo consiglio aiuta a riavere il mio ambiente bash.
Seralto,

1
Sarebbe utile per chi hai scritto cosa significa "--login"?
Ewoks

Make bash act as if it had been invoked as a login shell (see INVOCATION below). Fonte
lony

16

se è solo un passaggio temporaneo

puoi usare exec come menzionato sopra, ma per più di una soluzione permanente.

puoi usare chsh -s / bin / bash (per passare a bash) e chsh -s / bin / zsh (per passare a zsh)


12

Per Bash, prova

chsh -s $(which bash)

Per zsh, prova

chsh -s $(which zsh)

6

zsh ha un comando incorporato emulateche può emulare diverse shell impostando le opzioni appropriate, anche se csh non sarà mai completamente emulato.

emulate bash
perform commands
emulate -R zsh

Il flag -R ripristina tutte le opzioni ai valori predefiniti per quella shell.

Vedi: manuale di zsh


1
Non è chiaro se quale versione di bash emulerà, emulerà bash 4.x? o 5.x?
Edgar Aroutiounian,

2

Dovresti essere in grado di digitare bashnel terminale per passare a bash, quindi digitare zshper passare a zsh. Funziona almeno per me.


Questo è ancora più semplice.
Andromeda,

2
Questo funziona, ma ogni volta che si digita zsho bashsi entra in una sotto-shell (sottoprocesso nella shell corrente). Sarà necessario digitare exit più volte per tornare alla shell più in alto.
RichVel,

1

In Mac OS Catalina la shell interattiva predefinita è zsh. Per cambiare la shell in zsh da bash:

chsh -s /bin/zsh

Quindi è necessario inserire la password del Mac. Esci dal terminale e riaprilo. Per verificare se è stato modificato correttamente in ssh, emettere il seguente comando.

echo $SHELL

Se il risultato è / bin / zsh, l'attività è completata.

Per riportarlo a bash, emettere il seguente comando sul terminale.

chsh -s /bin/bash

Verifica di nuovo usando echo $SHELL. Quindi il risultato dovrebbe essere / bin / bash.


0

puoi semplicemente digitare basho se vuoi sempre usare bash:

su "iTerm2"

  • Vai a preferenze> Profili> Comando
  • Seleziona "Comando" dal menu a discesa
  • genere bash

Prova chiudendo iTerm e riaprilo


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.