Как установить мою оболочку по умолчанию на Mac?


190

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

Ответы:


31

Они применимы к MacOS Sierra 10.12.5 (16F73) и, возможно, к некоторым другим недавним и будущим версиям MacOS.

  1. chshнедостаточно для изменения оболочки по умолчанию. Убедитесь, что вы нажимаете Command+, ,когда ваш терминал открыт, и измените опцию «Оболочки открыты с» на «Оболочка входа по умолчанию».

  2. В случае bash, убедитесь, что вы выполняете, echo $BASH_VERSIONчтобы подтвердить, что вы используете предполагаемую версию bash. bash --versionне дает вам правильную информацию.


3
Поскольку этот ответ является принятым, возможно, вместо того, чтобы быть дополнением, предположительно, к другому ответу , вы можете сделать его полным ответом, включив дополнение.
Джейсон Р. Кумбс

Это ответ в документах сейчас.
reergymerej

@ JasonR.Coombs Готово.
Тушар Вазирани

1
Обновление: Теперь мы можем установить оболочки по умолчанию в Preferencesиз Terminal.app . Смотрите этот ответ Панкадж.
Базилик Бурк

Я упомянул сочетание клавиш для предпочтений.
Тушар Вазирани

242

1. sudo nano / etc / shells введите описание изображения здесь

2. добавьте / usr / local / bin / fish в ваш список оболочек введите описание изображения здесь

3. chsh -s / usr / local / bin / fish


2
А вам стоит поменять Shell open with: Default login shellв настройках Terminal.app
Тихонов Александр

77

Вы можете использовать chsh для изменения оболочки пользователя.

Запустите следующий код, например, чтобы изменить вашу оболочку на Zsh

chsh -s /bin/zsh

Как описано в страницах руководства, и Лорин, если оболочка не известна под ОСАМИ, вы должны добавить его в список известного: /etc/shells.


13
Пытался и получил chsh: /usr/local/bin/fish: non-standard shell решение было добавить его в / etc / shells, как описано в ответе @ lorin-hochstein ниже
lmsurprenant

dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash Изменение оболочки для dbright. Пароль для dbright: chsh: / Users / dbright / sys / bin / bash: нестандартная оболочка dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 корневое колесо 179 23 сентября 2007 г. / etc / shells
Дон

Хм, я недавно попробовал chsh, который работал простым пользователем ( -sхотя и без него ). Я попробую еще раз скоро.
Aif

73

Из терминала:

  1. Добавьте Fish, для /etc/shellsчего потребуется административный пароль:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Сделайте Fish вашей оболочкой по умолчанию chsh:

    chsh -s /usr/local/bin/fish
    

Из системных настроек:

  1. Пользователь и группы → Ctrl-клик на Current User → Advanced Options ...

  2. Изменить оболочку входа на /usr/local/bin/fish

    оболочка входа

  3. Нажмите ОК, выйдите и снова


8
Пришлось немного подправить шаг 1. -sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
purpletonic

Просто еще один способ сделать то же самое, что упоминал echo /usr/local/bin/fish | sudo tee -a /etc/shells
@purpletonic

20

Вот еще один способ сделать это:

Предполагая, что вы установили его с MacPorts, это можно сделать, выполнив:

sudo port install fish

Ваша оболочка будет расположена в /opt/local/bin/fish.

Вы должны сказать OSX, что это допустимая оболочка. Для этого добавьте этот путь в конец /etc/shellsфайла.

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


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

12

Единственное, что сработало для меня, было сочетание всех этих методов.

  1. Сначала я должен был добавить рыбу в /etc/shellsфайл

  2. Потом я побежал chsh -s /usr/local/bin/fish

  3. Наконец, я набрал Command+ ,и добавил /usr/local/bin/fishтуда путь по умолчанию

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


9

2
Я бы посоветовал предпочесть такой подход, а не менять стандартную оболочку OSX. У меня были «бесконечные установки» на iWorks - например - из-за сценариев установки, которые предполагают, что у вас есть SH-совместимая оболочка (в моем случае это не так для ZSH).
Кибер Оливейра

8

Terminal.app > Preferences> General> Shells open with:>/bin/fish

  1. Откройте свой терминал и нажмите command+, (запятая). Это откроет окно настроек.
  2. Первая вкладка «Общие».
  3. Найдите параметр «Оболочки открыты» и выберите 2-й вариант, который требует полного пути к оболочке.
  4. Вставьте ссылку на вашу команду рыбы, которая обычно есть /usr/local/bin/fish.

Смотрите этот скриншот, где zshустанавливается по умолчанию.

снимок экрана ввода <code> / bin / zsh </ code> в настройках Terminal.app

Я использую macOS Sierra . Также работает в macOS Mojave .


2
Наконец! Решение, которое работает для пользователей не-sudo!
Ébe Исаак

7

В MacOS Mojave мне пришлось сделать следующее (на примере zsh):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)

Примечание: Вы можете использовать этот точный метод для получения последней версии bash. stackoverflow.com/a/55011144/117471 Я придумал почти такой же код самостоятельно.
Бруно Броноски

1
Не нужно устанавливать zsh. Уже присутствует на macOS Мохаве. В комплекте на Мохаве, и по умолчанию в Каталине.
Базилик Бурк

5

Как получить последнюю версию bash на современных macOS (протестировано на Mojave).

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

Затем вы готовы завершить вкладку в стиле vim, которая доступна только для bash> = 4 (текущая версия brew5.0.2

# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete

# Display a list of the matching files
bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"

4

chshпрограмма позволит вам изменить свою оболочку по умолчанию. Он будет нуждаться в полном пути к исполняемому файлу, поэтому, если ваша оболочка есть, fishон будет запрашивать вывод данных при вводе which fish.

Вы увидите строку, начинающуюся с " Shell:". Если вы никогда не редактировали его, скорее всего, он говорит " Shell: /bin/bash". Замените этот /bin/bashпуть на путь к желаемой оболочке.


4

Находясь в терминале, откройте настройки терминала, используя Command+ ,.

На вкладке «Настройка» выберите одну из тем и выберите вкладку «Оболочка» справа.

Вы можете установить команду автозапуска fish.


4

Эта работа для меня на свежей установке Mac OSX (Sierra):

  1. Определить текущего пользователя как владельца оболочек
sudo chown $(whoami) /etc/shells
  1. Добавить рыбу в / etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Сделайте Fish своей стандартной оболочкой с помощью chsh
chsh -s /usr/local/bin/fish
  1. Переопределить корень как владельца оболочек
sudo chown root /etc/shells

2
heimdall:~ leeg$ dscl
Entering interactive mode... (type "help" for commands)
 > cd /Local/Default/Users/
/Local/Default/Users > read <<YOUR_USER>>
[...]
UserShell: /bin/bash
/Local/Default/Users >

просто измените это значение (с помощью команды записи в dscl).


Я получаю эту ошибку, когда запускаю команду read leeg: <dscl_cmd> Ошибка DS: -14136 (eDSRecordNotFound)
Лео Леопольд Херц,

1
Да. Это потому, что leeg - мое имя пользователя, а не ваше: P

0

Если у вас возникли проблемы с другими способами, работайте на Mac Mojave, но, как правило, работайте.

which fish

добавьте выходной путь в «Системные настройки> Пользователи и группы> щелкните правой кнопкой мыши пользователя, Дополнительные параметры» Вставьте полученный результат в «Оболочка входа:»


0

Чтобы изменить оболочку по умолчанию на Mac, выполните следующее:

chsh -s <name-of-shell>

Список оболочек, которые вы можете выбрать:

  1. / Бен / Баш
  2. / Бен / CSH
  3. / Бен / тире
  4. / Бен / КШ
  5. / Бен / ш
  6. / Бен / Tcsh
  7. / Бен / ЗШ

так что если вы хотите перейти с оболочки / bin / zsh, ваша команда будет выглядеть так:

chsh -s /bin/zsh

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

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