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

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

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

Ответ 1

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

0- Откройте cygwin на 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

Ответ 2

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

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

db_shell: /usr/bin/fish

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

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


Ссылки

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

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

В руководстве

Ответ 3

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

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

  • Перейдите на панель управления "Система" (щелкните правой кнопкой мыши в меню "Пуск" и выберите "Система" ).
  • Нажмите "Расширенные системные настройки" в столбце слева.
  • В появившемся всплывающем окне "Свойства системы" нажмите кнопку "Переменные среды..."
  • В поле "Пользовательские переменные" или "Системные переменные" (в зависимости от того, хотите ли вы, чтобы изменение повлияло только на вас самих или на всех пользователей), нажмите кнопку "Создать...".
  • Введите "SHELL" в поле "Имя переменной" и путь (относительно файловой системы Cygwin) в вашу предпочтительную оболочку в поле "Значение переменной".
  • Нажмите OK в трех открытых окнах, чтобы сохранить изменения.

Ответ 4

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

Ответ 5

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