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

194

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

vpoola88
источник

Ответы:

382

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

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

exec bash

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

exec zsh

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

larsks
источник
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 по умолчанию.

wanghao
источник
54

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

exec bash --login

или просто

exec bash -l
фил-ociraptor
источник
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)

Рахиль
источник
12

Для Bash, попробуйте

chsh -s $(which bash)

Для зш попробуйте

chsh -s $(which zsh)
как будто
источник
6

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

emulate bash
perform commands
emulate -R zsh

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

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

ljcusack
источник
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 и откройте его снова

Сара А
источник
-5

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

Раджани
источник
пока выйдет из zsh, но не обратно в bash
Сиси Донг - MSFT