Установить оболочку по умолчанию в Cygwin

Я использую Cygwin уже довольно давно. Теперь я хочу переключиться на рыбу из Баш. Все говорят, что вы должны использовать chsh -s /usr/bin/fish, но почему-то,chsh не работает для меня. Попытка изменить my Cygwin.bat файл тоже не работает, и не меняет мой .

Я действительно не понимаю, что происходит. Кто-нибудь может мне помочь?

6 ответов


я случайно встречаю ту же проблему, и теперь я предоставляю свое решение для вас.

0 - открытые cygwin by mintty.exe

1-создайте файл passwd вручную (mkpasswd)

$mkpasswd > /etc/passwd

2-изменить оболочку по умолчанию в файле passwd

$vim /etc/passwd
user:*:1976XX:1971XX:U-user\user,S-1-5-21-XXXX:/home/user:/bin/fish

3 - перезапустить mintty.exe


попробуйте редактировать /etc / nsswitch.conf вместо /etc / passwd

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

db_shell: /usr/bin/fish

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

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


ссылки

1 на mkpasswd в документации говорится следующее:

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

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


есть ответ на суперпользователя это еще проще. Задайте переменную среды оболочки в Windows. Установите его в предпочтительную оболочку (например,/bin/tcsh) и вновь запустили снаряды должны использовать его.

чтобы установить переменные среды:

  1. перейдите в Панель управления " Система "(щелкните правой кнопкой мыши в меню"Пуск" и выберите "Система")
  2. нажмите "дополнительные системные настройки" в левой колонке
  3. из раздела " Свойства системы" в появившемся окне нажмите "Переменные среды"...- кнопка!--9-->
  4. в поле" пользовательские переменные "или" системные переменные "(в зависимости от того, хотите ли вы, чтобы изменение повлияло только на вас или на всех пользователей) нажмите "Создать"..." кнопка.
  5. введите "SHELL" в поле "имя переменной" и путь (относительно файловой системы Cygwin) к предпочтительной оболочке в поле "значение переменной".
  6. нажмите OK на трех открытых окнах, чтобы сохранить изменения.

Я не уверен, насколько "правильное" решение, но я просто добавил /usr/bin/zsh; exit на дне . Вы можете заменить /usr/bin/zsh для пути к вашей оболочке выбора. Кажется, пока все работает нормально.


Если вы запускаете Cygwin через cmd-файла Я нашел самый простой способ-заменить строку команд для запуска рыбы вместо оболочки по умолчанию (Настройки->Запуск->Задачи): ""c:\cygwin64\bin\fish.exe" --login -i" (пожалуйста, измените путь к папке cygwin соответственно)


на c:\cygwin или c:\cygwin64 (независимо от вашего домашнего каталога cygwin) и редактировать cygwin.bat. Вместо

bash --login -i

написать, например,

rem bash --login -i
tcsh -l