Установить оболочку по умолчанию в 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
) и вновь запустили снаряды должны использовать его.
чтобы установить переменные среды:
- перейдите в Панель управления " Система "(щелкните правой кнопкой мыши в меню"Пуск" и выберите "Система")
- нажмите "дополнительные системные настройки" в левой колонке
- из раздела " Свойства системы" в появившемся окне нажмите "Переменные среды"...- кнопка!--9-->
- в поле" пользовательские переменные "или" системные переменные "(в зависимости от того, хотите ли вы, чтобы изменение повлияло только на вас или на всех пользователей) нажмите "Создать"..." кнопка.
- введите "SHELL" в поле "имя переменной" и путь (относительно файловой системы Cygwin) к предпочтительной оболочке в поле "значение переменной".
- нажмите 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