Переключение с zsh на bash на OSX и обратно?


194

Так что я учусь разрабатывать в Rails и открываю для себя силу Zsh. Однако для некоторых других моих задач я хочу использовать обычный Bash. Хотя они одинаковы, я просто чувствую себя комфортно в некоторых ситуациях. Как переключаться туда-сюда или включать и выключать zsh? Спасибо!

Ответы:


382

Вы можете просто использовать execдля замены текущей оболочки на новую:

Переключиться на bash:

exec bash

Переключиться на zsh:

exec zsh

Это не повлияет на новые окна терминала или что-то еще, но это удобно.


1
Пожалуйста! Если вы удовлетворены этим ответом, отметьте его как принятый, отметив галочкой слева от ответа. Спасибо!
Жаворонки

1
Или просто вызовите zsh, и когда вы закончите, exitвернитесь к bash. Исполнение кажется ненужным и нежелательным.
Крис Пейдж

Все зависит от того, что вы ожидаете от окна вашего терминала при выходе. Я считаю, что начинать подоболочку самому не нужно и нежелательно.
Жаворонки

2
Как вы меняете настройки по умолчанию? Кроме того, когда я выполняю "exec bash" в zsh, он не получает исходный файл bash_profile.
kalehv

1
Есть моменты, когда я хочу использовать zsh, и другие моменты, когда это мешает тому, что я хочу сделать. Установка значения по умолчанию туда и обратно - плохая идея, так что это идеальное решение !!! престижность !!
Боб Робертс

126

Вы можете попробовать chsh -s /bin/bashустановить bash по умолчанию или chsh -s /bin/zshустановить zsh по умолчанию.


54

Я часто переключаюсь между zsh и bash. Некоторое время я использовал исходный код моего bash_profile при каждом переключении. Тогда я узнал, что вы можете (как правило) сделать

exec bash --login

или просто

exec bash -l

1
Спасибо, Филл, я установил мыслитель / ноутбук, и он испортил все мои настройки. Ваш совет помогает вернуть мою среду в bash.
Серальто

1
Было бы полезно, если бы вы написали, для чего нужен «--login»?
Эвокс

Make bash act as if it had been invoked as a login shell (see INVOCATION below). Источник
одинокий

16

если это просто временный выключатель

Вы можете использовать exec, как указано выше, но для более постоянного решения.

Вы можете использовать chsh -s / bin / bash (для переключения на bash) и chsh -s / bin / zsh (для переключения на zsh)



6

У zsh есть встроенная команда, emulateкоторая может эмулировать различные оболочки, устанавливая соответствующие параметры, хотя csh никогда не будет полностью эмулироваться.

emulate bash
perform commands
emulate -R zsh

Флаг -R восстанавливает все параметры до значений по умолчанию для этой оболочки.

Смотри: zsh инструкция


1
Не ясно, какую версию bash он будет эмулировать, будет ли он эмулировать bash 4.x? или 5.х?
Эдгар Арутюнян

2

Вы должны иметь возможность просто ввести bashв терминал, чтобы переключиться на bash, а затем набрать, zshчтобы переключиться на zsh. У меня работает как минимум.


Это еще проще.
Андромеда

2
Это работает, но каждый раз, когда вы печатаете zshили bashвходите в под-оболочку (подпроцесс под текущей оболочкой). Вам нужно будет несколько раз ввести команду exit, чтобы вернуться к самой верхней оболочке.
RichVel

1

В Mac OS Catalina по умолчанию используется интерактивная оболочка zsh. Чтобы изменить shell на zsh из bash:

chsh -s /bin/zsh

Затем вам нужно ввести пароль Mac. Выйдите из терминала и снова откройте его. Чтобы проверить, успешно ли он изменился на ssh, введите следующую команду.

echo $SHELL

Если результат - / bin / zsh, ваша задача выполнена.

Чтобы изменить его обратно на bash, выполните следующую команду на терминале.

chsh -s /bin/bash

Проверьте это снова, используя echo $SHELL. Тогда результат должен быть / bin / bash.


0

Вы можете просто ввести bashили, если вы всегда хотите использовать Bash:

на "iTerm2"

  • Перейдите в настройки> Профили> Команда
  • Выберите «Команда» из выпадающего
  • Тип bash

Проверьте, закрыв iTerm и откройте его снова


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.