Я пытаюсь изменить оболочку по умолчанию с bash на zsh в cygwin.
- Обычная команда unix
chsh
недоступна в cygwin - Файл etc/passwd, кажется, больше не используется в существующих версиях cygwin.
Так как еще можно изменить оболочку по умолчанию?
Ответ зависит от того, как вы запустите Cygwin.
Если вы запускаете Cygwin с Cygwin.bat, измените последнюю строку /Cygwin.bat
(обычно C:\cygwin\
или C:\cygwin64\
).
Если вы запустите Cygwin с помощью mintty, то добавьте оболочку в качестве параметра. mintty /usr/bin/zsh -
Если вы запускаете mintty.exe
напрямую или запускаете Cygwin Terminal из меню «Пуск» или с рабочего стола (это ярлык mintty.exe), вы можете установить для переменной среды SHELL в Windows значение /usr/bin/zsh
.
В Windows 7:
Остальное должно быть само за себя.
Скопировано из моего ответа на переполнение стека:
Вместо создания файла passwd, который Cygwin рекомендует для 1, вы можете отредактировать /etc/nsswitch.conf. Добавьте или измените следующую строку:
db_shell: /usr/bin/fish
Недостатком этого метода является то, что если у вас есть несколько пользователей, это изменение влияет на всех из них. С другой стороны, все очень просто. Единственный улов в том, что вам нужно перезапустить Cygwin.
Если вы используете mkpasswd после этого изменения, он будет использовать новую оболочку по умолчанию для всех пользователей, которые могут войти в систему .
1 Документация mkpasswd гласит:
Не используйте эту команду для создания локального файла /etc /passwd, если он вам действительно не нужен. См. Руководство пользователя Cygwin для получения дополнительной информации.
Я не могу найти никаких веских аргументов в руководстве пользователя, кроме упоминания о том, что вам придется заново создавать файлы /etc /passwd и /etc /group, если ваши пользователи и группы меняются, что, я полагаю, достаточно прилично причина. Я могу сказать, что этот процесс несколько ошибочен для новичков.
Это хак: поместите это в качестве первой строки вашего ~/.bash_profile
:
exec zsh