Установка оболочки по умолчанию в 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)