Mudando do zsh para o bash no OSX e vice-versa?

194

Então, estou aprendendo a desenvolver no Rails e descobri o poder do zsh. No entanto, para algumas das minhas outras tarefas, desejo usar o Bash normal. Embora eles sejam iguais, eu me sinto à vontade com o layout do bash em algumas situações. Como alternar entre as opções, ou ativar e desativar o zsh? Obrigado!

vpoola88
fonte

Respostas:

382

Você pode usar apenas execpara substituir seu shell atual por um novo shell:

Mudar para bash:

exec bash

Mudar para zsh:

exec zsh

Isso não afetará as novas janelas de terminal nem nada, mas é conveniente.

larsks
fonte
1
De nada! Se você estiver satisfeito com esta resposta, reserve um momento para marcá-la como aceita, marcando a marca de seleção à esquerda da resposta. Obrigado!
Larsks
1
Ou simplesmente invoque o zsh e, quando terminar, exitvolte ao bash. Executar parece desnecessário e indesejável.
Chris Page
Tudo depende do que você espera que a janela do terminal faça ao sair. Acho que iniciar um subshell é desnecessário e indesejável.
larsks
2
Como você altera o padrão? Além disso, quando executo "exec bash" no zsh, ele não gera meu bash_profile.
kalehv
1
Há momentos em que eu quero usar o zsh e outros em que isso interfere no que eu quero fazer. Definir o padrão para frente e para trás é uma péssima idéia, portanto esta é a solução perfeita !!! parabéns !!
Bob Roberts
126

você pode tentar chsh -s /bin/bashdefinir o bash como padrão ou chsh -s /bin/zsho zsh como padrão.

wanghao
fonte
54

Alterno entre zsh e bash com alguma frequência. Por um tempo, eu costumava usar meu bash_profile em todos os switches. Então eu descobri que você pode (normalmente) fazer

exec bash --login

ou apenas

exec bash -l
phil-ociraptor
fonte
1
Obrigado phill, eu instalei o thinkbot / laptop e ele bagunçou todas as minhas configurações. Sua dica ajuda a recuperar meu ambiente do bash.
Seralto
1
Seria útil você escrever para que serve "--login"?
Ewoks
Make bash act as if it had been invoked as a login shell (see INVOCATION below). Fonte
lony
16

se é apenas uma mudança temporária

você pode usar exec como mencionado acima, mas para obter uma solução permanente.

você pode usar chsh -s / bin / bash (para alternar para o bash) e chsh -s / bin / zsh (para alternar para o zsh)

Rahil
fonte
12

Para o Bash, tente

chsh -s $(which bash)

Para zsh, tente

chsh -s $(which zsh)
Até parece
fonte
6

O zsh possui um comando interno emulateque pode emular diferentes shells definindo as opções apropriadas, embora o csh nunca seja totalmente emulado.

emulate bash
perform commands
emulate -R zsh

O sinalizador -R restaura todas as opções para seus valores padrão para esse shell.

Consulte: manual do zsh

ljcusack
fonte
1
Ainda não está claro que versão do bash ele irá emular, ele simulará o bash 4.x? ou 5.x?
Edgar Aroutiounian
2

Você deve apenas digitar bashno terminal para alternar para o bash e digitar zshpara alternar para zsh. Funciona para mim pelo menos.

Paul Jurczyk
fonte
Isso é ainda mais simples.
andromeda
2
Isso funciona, mas toda vez que você digita zshou bashentra em um subcasco (subprocesso no shell atual). Você precisará digitar exit várias vezes para retornar ao shell mais superior.
RichVel 15/06/19
1

No Mac OS Catalina, o shell interativo padrão é zsh. Para alterar o shell para zsh do bash:

chsh -s /bin/zsh

Então você precisa digitar sua senha do Mac. Saia do terminal e abra-o novamente. Para verificar se foi alterado com êxito para ssh, emita o seguinte comando.

echo $SHELL

Se o resultado for / bin / zsh, sua tarefa será concluída.

Para voltar ao bash, emita o seguinte comando no terminal.

chsh -s /bin/bash

Verifique novamente usando echo $SHELL. O resultado deve ser / bin / bash.

Randil Tennakoon
fonte
0

você pode apenas digitar bashou se sempre quiser usar o bash:

no "iTerm2"

  • Vá para preferências> Perfis> Comando
  • Selecione "Comando" no menu suspenso
  • Tipo bash

Teste fechando o iTerm e abra-o novamente

Sarah A
fonte
-5

Você pode facilmente voltar ao bash usando o comando "bye"

Rajani
fonte
o bye sairá do zsh, mas não voltará para o bash
Cece Dong - MSFT