Установить оболочку по умолчанию в Cygwin
Я использую Cygwin для довольно долгое время сейчас. Теперь я хочу переключиться на рыбу из Баша. Все говорят, что вы должны использовать chsh -s /usr/bin/fish, но по какой-то причине chsh не работает для меня. Попытка изменить мой файл Cygwin.bat также не работает, как и изменение моего файла /etc/passwd.
Я действительно не понимаю, что происходит. Может кто-то пожалуйста, помогите мне?
6 ответов:
Я случайно сталкиваюсь с той же проблемой, и теперь я предоставляю вам свое решение.
0-открыть
cygwinпоmintty.exe1-Сборка файла passwd вручную (
mkpasswd)$mkpasswd > /etc/passwd2-изменить оболочку по умолчанию в файле passwd
$vim /etc/passwd user:*:1976XX:1971XX:U-user\user,S-1-5-21-XXXX:/home/user:/bin/fish3-перезапуск
mintty.exe
Попробуйте отредактировать файл / etc / nsswitch.conf вместо /etc / passwd
Вместо создания файла passwd, который Cygwin рекомендует не создавать.1, вы можете редактировать /etc / nsswitch.conf . Добавьте или отредактируйте следующую строку:
db_shell: /usr/bin/fishОбратная сторона этого метода заключается в том, что, если у вас есть несколько пользователей, это изменение затрагивает их всех. Верх/верх - это то, что все очень просто. Единственная загвоздка в том, что вам нужно перезапустить Cygwin.
Если вы используете
mkpasswdпосле этого изменения он будет использовать новую оболочку по умолчанию для всех пользователей, которым разрешено входить в систему.
Ссылки
1 в документации
mkpasswdговорится следующее:Не используйте эту команду для создания локального файла/etc / passwd, если он вам действительно не нужен. Дополнительную информацию смотрите в руководстве пользователя Cygwin.
Я действительно не могу найти никаких убедительных аргументов в руководстве пользователя , кроме упоминания о том, что вам придется регенерировать
/etc/passwdи/etc/groupфайлы, если ваши пользователи и группы меняются, что, я полагаю, является достаточно приличной причиной. Я могу сказать, что этот процесс несколько подвержен ошибкам для новичков.
Есть ответ на суперпользователя, который еще проще. Задайте переменную среды оболочки в Windows. Установите его в предпочтительную оболочку (например,
/bin/tcsh), и вновь запущенные оболочки должны использовать его.Для задания переменных окружения:
- перейдите в Панель управления " Система "(щелкните правой кнопкой мыши на меню Пуск и выберите пункт "Система")
- нажмите на кнопку "Дополнительные Системные настройки" в левой колонке
- в появившемся окне" Свойства системы " нажмите кнопку "переменная окружения..."кнопка
- в поле" пользовательские переменные "или" системные переменные "(в зависимости от того, хотите ли вы, чтобы изменение коснулось только вас или всех пользователей) нажмите кнопку " Создать..." кнопка.
- введите "SHELL" в поле "имя переменной" и путь (относительно файловой системы Cygwin) к вашей предпочтительной оболочке в поле "значение переменной".
- Нажмите кнопку ОК в трех открытых окнах, чтобы сохранить изменения.
Я не уверен, насколько это "правильное" решение, но я только что добавил
/usr/bin/zsh; exitв нижнюю часть моего файла.bashrc. Вы можете заменить/usr/bin/zshпуть к выбранной вами оболочке. Похоже, пока все идет нормально.
Если вы запускаете Cygwin через ConEmu, я нашел самый простой способ-заменить командную строку для запуска fish вместо оболочки по умолчанию (Settings - >Startup - >Tasks ):
""c:\cygwin64\bin\fish.exe" --login -i"(пожалуйста, измените путь к вашей папке cygwin соответственно)
Перейдите в
c:\cygwinилиc:\cygwin64(каков бы ни был ваш домашний каталог cygwin) и отредактируйтеcygwin.bat. Вместоbash --login -iНапишите, например,
rem bash --login -i tcsh -l
Comments