28

Я пытаюсь изменить оболочку по умолчанию с bash на zsh в cygwin.

  1. Обычная команда unix chsh недоступна в cygwin
  2. Файл etc/passwd, кажется, больше не используется в существующих версиях cygwin.

Так как еще можно изменить оболочку по умолчанию?

4 ответа4

22

Ответ зависит от того, как вы запустите Cygwin.

Если вы запускаете Cygwin с Cygwin.bat, измените последнюю строку /Cygwin.bat (обычно C:\cygwin\ или C:\cygwin64\).

Если вы запустите Cygwin с помощью mintty, то добавьте оболочку в качестве параметра. mintty /usr/bin/zsh -

16

Если вы запускаете mintty.exe напрямую или запускаете Cygwin Terminal из меню «Пуск» или с рабочего стола (это ярлык mintty.exe), вы можете установить для переменной среды SHELL в Windows значение /usr/bin/zsh .

В Windows 7:

  1. Нажмите клавишу Windows.
  2. Начните вводить "окружение".
  3. Когда он появится, выберите "Изменить переменные среды для вашей учетной записи".

Остальное должно быть само за себя.

15

Скопировано из моего ответа на переполнение стека:


Вместо создания файла passwd, который Cygwin рекомендует для 1, вы можете отредактировать /etc/nsswitch.conf. Добавьте или измените следующую строку:

db_shell: /usr/bin/fish

Недостатком этого метода является то, что если у вас есть несколько пользователей, это изменение влияет на всех из них. С другой стороны, все очень просто. Единственный улов в том, что вам нужно перезапустить Cygwin.

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


1 Документация mkpasswd гласит:

Не используйте эту команду для создания локального файла /etc /passwd, если он вам действительно не нужен. См. Руководство пользователя Cygwin для получения дополнительной информации.

Я не могу найти никаких веских аргументов в руководстве пользователя, кроме упоминания о том, что вам придется заново создавать файлы /etc /passwd и /etc /group, если ваши пользователи и группы меняются, что, я полагаю, достаточно прилично причина. Я могу сказать, что этот процесс несколько ошибочен для новичков.

5

Это хак: поместите это в качестве первой строки вашего ~/.bash_profile:

exec zsh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .