Как изменить zsh на bash mac os

Обновлено: 21.11.2024

macOS Catalina имеет ряд новых функций и возможностей, но одно изменение, которое часто упускают из виду, — это новая оболочка, используемая в Терминале для взаимодействия с Mac через командную строку.

Короче говоря, Apple переходит с Bash (Bourne Again Shell) на новую Zsh. В этом руководстве по Rocket Yard мы рассмотрим, как это изменение в Терминале и командной строке повлияет на вас.

Что такое оболочка?

На самом простом уровне оболочка – это программа, которая позволяет вам управлять компьютером, в данном случае Mac, с помощью команд, которые вы вводите с клавиатуры. Оболочки обычно представляют собой интерактивные текстовые интерфейсы, которые принимают команды и представляют результаты. Существует множество различных оболочек, которые вы можете использовать, но если вам интересно, почему кто-то захочет использовать оболочку и командную строку для управления компьютером, вам нужно отправиться в путешествие во времени, на заре компьютерной эры. .

В те далекие времена управление компьютером было сложной задачей, которая могла потребовать от вас ручной загрузки ячеек памяти, по одной за раз, с данными, которые в конечном итоге запускались как программа. В некоторых случаях это делалось путем установки ряда переключателей, представляющих адрес ячейки памяти, и последующей загрузки данных в память с помощью другого набора переключателей. Этот процесс был трудоемким и подвержен ошибкам.

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

После того, как считыватель бумажных лент заработает, вы сможете загрузить программу-оболочку, позволяющую использовать телетайп в качестве интерфейса командной строки. Ах, это были дни.

Ранние персональные компьютеры, такие как IMSAI 8080, использовали набор переключателей для загрузки программ вручную. Изображение предоставлено Джадсоном Маккрани.

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

Хорошо, тогда оболочка была большим шагом вперед, но почему она до сих пор используется с современными компьютерами?

Оболочка и Mac

В Mac используется UNIX-подобная операционная система. И, как и в большинстве систем на базе Unix или Linux, интерфейс командной строки является одним из ключевых методов взаимодействия с операционной системой. Mac (и многие системы UNIX и Linux) также имеют графический интерфейс пользователя, который еще больше упрощает работу с компьютером. Но командная строка по-прежнему существует, и для работы с основными компонентами операционной системы она может быть очень универсальной, предоставляя больше возможностей, чем то, что доступно в GUI (графическом интерфейсе пользователя).

Оболочка определяет, как командная строка представляется пользователю и какие функции поддерживает командная строка. Большинство оболочек в той или иной степени предлагают следующее:

  • Синтаксис оболочки: как оболочка понимает вводимые вами данные.
  • Команды оболочки. Реальные команды, которые может выполнять оболочка.
  • Функции оболочки: возможность группировать команды вместе.
  • Параметры оболочки: как и где оболочка сохраняет значения.
  • Расширение оболочки: как расширяются параметры в команде
  • Перенаправление: управляет вводом и выводом команд.
  • Выполнение команды: что происходит при выполнении команды.
  • Сценарии оболочки: возможность запускать файл, содержащий несколько команд оболочки.

Почему Apple меняет оболочку?

Apple переходит с оболочки Bash на Zsh (Z Shell). Они не сказали конкретно, почему происходит изменение, но мы можем сделать некоторые обоснованные предположения.

Apple использует оболочку Bash со времен OS X Jaguar, но не обновляла Bash с момента выпуска версии 3.2 в 2007 году. Для сравнения: версия Bash, используемая на вашем Mac, была новой, когда был представлен первый iPhone. .

Apple, скорее всего, использует более старую версию, поскольку лицензия для оболочки Bash изменилась с GNU GPL 2 (стандартная общественная лицензия) на GNU GPLv3, которая включает ограничения, которые могут вызвать проблемы для Apple.

Apple несколько лет возилась со старой версией, но на самом деле пришло время перейти к чему-то более актуальному.

Zsh, включенный в macOS Catalina, имеет версию 5.7.1 и является самой последней версией на момент выпуска Catalina. Он также использует менее ограничительную лицензию MIT, которая больше нравится Apple.

Примечание. Хотя Apple переходит на Zsh в macOS Catalina, при работе в режиме восстановления оболочка Bash по-прежнему используется при использовании приложения «Терминал».

Я вынужден изменить оболочку?

И да, и нет. Apple установит Zsh по умолчанию для любой новой учетной записи пользователя, созданной в macOS Catalina или более поздней версии.Если вы обновили свой Mac с более ранней версии macOS, существующие учетные записи пользователей по-прежнему используют оболочку Bash.

Однако вы можете обновить все учетные записи до Zsh или понизить версию учетной записи до Bash (или, если на то пошло, до любой оболочки, которую вы хотите использовать).

Чем отличается Zsh?

Не очень; Bash и Zsh имеют очень высокий уровень совместимости между собой. Оба основаны на старой оболочке Bourne. Скорее всего, большинство команд и скриптов Bash, которые вы можете использовать, будут нормально работать под Zsh.

Zsh поддерживает автозаполнение, введите часть команды, а затем дважды нажмите клавишу табуляции, и отобразится список совпадений, из которых вы можете выбрать.

Настоящим преимуществом Zsh являются современные функции, которые очень упрощают работу с оболочкой. Это включает в себя автозаполнение введенных команд и проверку орфографии, мой фаворит, поскольку я часто делаю опечатку в команде, которую Bash просто пропускает, а затем упрекает меня в том, что такой команды нет, в то время как Zsh предлагает внести исправление к моей команде для меня.

Для таких неумелых, как я, этого достаточно, чтобы перейти на Zsh.

А как насчет всех моих сценариев Bash?

Добавьте следующее в начало ваших сценариев Bash, чтобы обеспечить совместимость:

Как временно изменить оболочки

Zsh уже давно входит в состав macOS; это просто никогда не было по умолчанию раньше. Если вы хотите временно опробовать Zsh, сделайте следующее:

Запустите терминал, расположенный в папке /Applications/Utilities.

В командной строке терминала введите:

Нажмите клавишу ввода или возврата.

Оболочка, используемая в текущем сеансе терминала, изменится на Zsh, а командная строка изменится на знак процента (%).

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

Нажмите клавишу ввода или возврата.

Вы можете узнать больше о приложении Terminal в руководстве Rocket Yard: Tech 101: Introduction to the Mac’s Terminal App, Part One

Изменить оболочку по умолчанию

Независимо от того, какую оболочку Apple устанавливает для вас по умолчанию, вы можете изменить ее одним из двух способов:

В командной строке терминала введите:

В зависимости от того, хотите ли вы установить Zsh или Bash по умолчанию.

Нажмите клавишу ввода или возврата.

После изменения оболочки по умолчанию вам потребуется открыть новое окно Терминала, чтобы увидеть, как изменения вступят в силу.

Вы также можете установить оболочку по умолчанию в Системных настройках:

  • Запустите Системные настройки и выберите панель настроек Пользователи и группы.
  • Нажмите значок блокировки в левом нижнем углу, а затем введите свой пароль администратора по запросу.
  • Щелкните правой кнопкой мыши учетную запись пользователя на боковой панели, чью оболочку по умолчанию вы хотите изменить. Во всплывающем меню выберите Дополнительные параметры.
  • Найдите элемент с надписью «Оболочка входа».
  • В раскрывающемся меню выберите одну из доступных оболочек.

Примечание. В macOS Catalina нет записи в раскрывающемся меню для Bash. Вместо этого введите /bin/bash непосредственно в элемент оболочки входа в систему.

Когда будете готовы, нажмите кнопку OK.

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

Как насчет предупреждающего сообщения о замене на Zsh?

Если у вас установлен Bash по умолчанию, и вы запускаете Терминал или открываете новый сеанс Терминала, вы увидите следующее сообщение:

«Интерактивная оболочка по умолчанию теперь zsh. Чтобы обновить свою учетную запись до zsh, запустите chsh -s /bin/zsh ».

Если вы намерены продолжать использовать Bash, вы можете удалить это сообщение, введя в командной строке следующее:

Нажмите клавишу ввода или возврата.

Документация по оболочке

В рамках одной статьи невозможно рассказать о различных возможностях каждой оболочки. Для этого действительно потребовалась бы книга или две. Если вы хотите узнать больше о Bash и Zsh, вы можете ознакомиться с онлайн-документацией по каждому из них.

Часто ли вы используете приложение "Терминал"? И если да, то какую оболочку вы предпочитаете использовать? Дайте нам знать в комментариях ниже.

Я учусь разрабатывать на Rails и открыл для себя возможности zsh .Однако для некоторых других моих задач я хочу использовать обычный bash .

Несмотря на то, что это одно и то же, в некоторых ситуациях я чувствую себя комфортно с макетом bash.

Как переключаться между ними или включать и выключать zsh?

11 ответов 11

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

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

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

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

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

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

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

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

Чтобы терминал вступил в силу, потребуется перезагрузка.

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

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

если это просто временное переключение

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

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

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

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

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

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

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

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

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

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

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

Для проверки закройте iTerm и снова откройте его

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

Когда вы впервые начнете использовать Mac OS, вы обнаружите, что языком сценариев по умолчанию в терминале является Zsh, а не Bash. Если вы хотите изменить эту ситуацию, я могу помочь.

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

Итак, давайте представим, как изменить zsh на bash в терминале Mac OS! Но сначала я хочу представить, что такое язык сценариев.

Что такое язык сценариев?

Язык сценариев — это интерпретируемый язык программирования.

Следующий контент взят из Википедии.

Язык сценариев или язык сценариев — это язык программирования для системы времени выполнения, который автоматизирует выполнение задач, которые в противном случае выполнялись бы индивидуально оператором-человеком. [1] Языки сценариев обычно интерпретируются во время выполнения, а не компилируются.
Примитивы языка сценариев обычно представляют собой элементарные задачи или вызовы API [необходимо уточнение] , и язык сценариев позволяет их комбинировать. в большее количество программ. Среды, которые можно автоматизировать с помощью сценариев, включают прикладное программное обеспечение, текстовые редакторы, веб-страницы, оболочки операционных систем, встроенные системы и компьютерные игры.Язык сценариев можно рассматривать как предметно-ориентированный язык для конкретной среды; в случае написания сценария приложения он также известен как язык расширения. Языки сценариев также иногда называют языками программирования очень высокого уровня, поскольку они иногда работают на высоком уровне абстракции, или языками управления, особенно для языков управления заданиями на мейнфреймах.

Изменить язык сценариев через терминал

Во-первых, мы можем проверить, какие языки сценариев поддерживаются в системе.

Можно обнаружить, что помимо bash на самом деле есть много вариантов.

Затем, если мы изменим zsh на bash, мы сможем использовать команду chsh.

Мы видим, что исходный терминал отображает zsh:

После повторного открытия он будет отображаться как bash.

Конечно, помимо работы в терминале, мы также можем заменить bash в интерфейсе настроек.

Используйте системные настройки для изменения языка сценариев

щелкните значок яблока в правом верхнем углу> Системные настройки> Пользователи и группы> Нажмите на замок, чтобы внести изменения> Щелкните правой кнопкой мыши учетную запись> Дополнительные параметры> переключить оболочку входа。

Таким же образом можно переключить язык сценариев по умолчанию.

Выше приведено простое руководство о том, как изменить zsh на bash в терминале в Mac OS.

В этом руководстве мы научимся менять оболочку по умолчанию на bash в macOS Catalina 10.15.

С выпуском macOS Catalina 10.15 7 октября 2019 года Apple сделала zsh оболочкой по умолчанию. Подробнее об этом можно узнать здесь.

По умолчанию ваш Mac использует zsh или bash в качестве интерпретатора командной строки для оболочки входа и интерактивной оболочки:

  • zsh (оболочка Z) — это оболочка по умолчанию для всех новых учетных записей пользователей, начиная с бета-версии macOS Catalina.
  • bash — это оболочка по умолчанию в macOS Mojave и более ранних версиях.

Если вы хотите сделать bash интерпретатором командной строки по умолчанию, выполните следующие действия.

Закройте терминал, если он открыт.

Шаг 1. Откройте «Системные настройки» и выберите «Пользователи и группы»

Нажмите значок «Системные настройки» или нажмите Cmd + пробел, чтобы открыть Spotlight, введите «Системные настройки» и откройте его.

Теперь выберите Пользователи и группы.


Шаг 2. Разблокируйте

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


Шаг 3. Откройте дополнительные параметры.

Нажмите клавишу Ctrl и щелкните профиль текущего пользователя, чтобы открыть дополнительные параметры. Нажмите на нее.


Шаг 4. Установите оболочку входа

Теперь выберите оболочку входа в раскрывающемся меню и нажмите кнопку ОК.


Теперь нажмите на значок замка, который вы разблокировали ранее на шаге 2, чтобы заблокировать его.

Откройте терминал, и вы получите интерпретатор командной строки на основе вашего выбора.

Пожалуйста, поделитесь этим руководством в социальных сетях, если оно покажется вам полезным. Увидимся в следующем уроке. Удачи!

Читайте также: