Как изменить оболочку по умолчанию в Cygwin?

Как изменить оболочку по умолчанию в Cygwin?

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

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

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

решение1

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

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

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

решение2

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

В Windows 7:

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

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

решение3

Скопировано измой ответ на Stack Overflow:


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

db_shell: /usr/bin/fish

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

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


1 В документации mkpasswd сказано следующее:

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

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

решение4

Мой хостинг-сервис dreamhost.com имеет поле опций на экране редактирования пользователя. Он может выбирать между четырьмя различными оболочками и выглядит примерно так

User Type: (Click one of these three buttons) 
  * FTP user - allows login via FTP only.   
  * SFTP user - allows login via SFTP only.
  * Shell user - allows login via both SSH and FTP. 
        Shell Type: ____/usr/bin/tcsh_____  
Disallow FTP?:  ___

Связанный контент