Перехід з zsh на bash на OSX, і знову назад?


194

Тож я вчуся розвиватися в Rails, і виявили силу zsh. Однак для деяких інших моїх завдань я хочу використовувати звичайний Bash. Хоча вони однакові, я просто відчуваю себе комфортно з викладеними в одних ситуаціях. Як перемикати назад і вперед або вмикати та вимикати zsh? Дякую!

Відповіді:


382

Ви можете просто execзамінити поточну оболонку новою оболонкою:

Перейти на bash:

exec bash

Перейти на zsh:

exec zsh

Це не вплине на нові вікна терміналів чи що-небудь, але це зручно.


1
Ласкаво просимо! Якщо ви задоволені цією відповіддю, будь ласка, знайдіть хвилинку, щоб позначити її як прийняту, встановивши прапорець зліва від відповіді. Дякую!
larsks

1
Або просто запустіть zsh, і коли ви закінчите, exitщоб повернутися до баш. Виконання цього видається непотрібним і небажаним.
Кріс Пейдж

Все залежить від того, що ви очікуєте робити у своєму вікні терміналу під час виходу. Мені здається, що запуск передплати є непотрібним і небажаним.
larsks

2
Як змінити типовий режим? Крім того, коли я виконую "exec bash" в zsh, він не джерело мого bash_profile.
kalehv

1
Бувають випадки, коли я хочу використовувати zsh та інші часи, коли це заважає тому, що я хочу робити. Налаштування за замовчуванням назад і назад - погана ідея, тому це ідеальне рішення !!! кудо !!
Боб Робертс

126

ви можете спробувати chsh -s /bin/bashвстановити bash як типовий або chsh -s /bin/zshzsh як типовий.


54

Я перемикаюсь між zsh і bash дещо часто. Я деякий час мені довелося джерело свого bash_profile кожного перемикача. Тоді я дізнався, що ти можеш (як правило) робити

exec bash --login

або просто

exec bash -l

1
Дякую, я встановив thinkbot / ноутбук, і це зіпсувало всі мої конфігурації. Ваша порада допомагає повернути моє оточення.
Сералто

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

Для Баша спробуйте

chsh -s $(which bash)

Для zsh спробуйте

chsh -s $(which zsh)

6

zsh має вбудовану команду, emulateяка може імітувати різні оболонки, встановлюючи відповідні параметри, хоча csh ніколи не буде повністю імітуватися.

emulate bash
perform commands
emulate -R zsh

Прапор -R відновлює всі параметри до їх значень за замовчуванням для цієї оболонки.

Див .: zsh керівництво


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

2

Ви повинні мати можливість просто ввести bashтермінал для переходу на bash, а потім введіть zshдля переходу на zsh. Принаймні для мене працює.


Це ще простіше.
andromeda

2
Це спрацьовує, але кожен раз, коли ви вводите zshабо bashзбираєтесь в підкожу (підпроцес під поточною оболонкою). Вам потрібно буде набрати вихід кілька разів, щоб повернутися до самої верхньої оболонки.
RichVel

1

У Mac OS Catalina інтерактивна оболонка за замовчуванням - zsh. Щоб змінити оболонку на 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, скориставшись командою "bye"


до побачення вийде zsh, але не повернеться до баш
Cece Dong - MSFT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.