Как я могу настроить zsh как оболочку по умолчанию в Cygwin?
Если вы не используете cygwin в качестве многопользовательской среды (в этом случае используйте chsh
как в стандартной среде).
В противном случае, вы просто изменяете cygwin.bat, чтобы он запускался zsh -l -i
вместо него, bash --login -i
и он будет работать как оболочка входа в систему.
Конечно, если вы хотите запустить несколько оболочек при запуске, просто создайте набор .bat
файлов для загрузки различных оболочек. ( sh
, ksh
, csh
, И fish
т.д.)
Я чувствовал, что должен обновить это, чтобы предоставить информацию о том, как это сделать, chsh
но все же делать это на стороне Unix. Отредактируйте /etc/passwd
файл и заменить вхождения /bin/bash
с /bin/zsh
. (Это действительно то, chsh
что нужно сделать, но таким образом вы сделаете это для всех пользователей за один раз.)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
и отредактируйте только что созданный/etc/passwd
файлЕсли я правильно прочитал ваш вопрос, вы ищете что-то еще, кроме того, что поставляет chere ( что само собой разумеется , довольно круто).
В текущей версии Cygwin нет файла / etc / passwd , а в системе, над которой я работаю, данные учетной записи Windows находятся в базе данных домена вне моего контроля. Следовательно, chsh больше не поддерживается.
Я также обнаружил, что bash не жестко запрограммирован в скрипте startxwin и не запрограммирован жестко в любом файле .bat. Оказывается, вам совсем не нужно возиться с файлами .bat.
В поисках того, как изменить мою оболочку, я нашел несколько советов о mkpasswd
Я добавил это к соединению.
На странице руководства сказано:
(Я не знаю, почему интервал так "выключен" ...)
Затем я использовал следующую команду:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
В следующий раз, когда вы откроете терминал Cygwin, он перейдет прямо в zsh
И это, я думаю, то, что вы просили.
источник
Я просто добавляю
bin
каталог в каталоге cygwin в свою переменную среды Windows Path и затем создаю ярлык для:или просто измените ярлык по умолчанию в меню запуска Cygwin на тот же.
источник
/bin/zsh
вместоzsh
.the bin directory in the cygwin directory to my Windows Path Environment Variable
у меня работает без этого измененияi
не требуется , потому что это будет Войти оболочки и неinteractive
.Скопировано из моего ответа на переполнение стека :
Вместо создания файла passwd, который Cygwin рекомендует для 1 , вы можете отредактировать /etc/nsswitch.conf . Добавьте или измените следующую строку:
Недостатком этого метода является то, что если у вас есть несколько пользователей, это изменение влияет на всех из них. С другой стороны, все очень просто. Единственный улов в том, что вам нужно перезагрузить Cygwin.
Если вы делаете использовать mkpasswd после этого изменения, он будет использовать новую оболочку по умолчанию для всех пользователей, которые могут войти в систему .
1 Документация mkpasswd гласит:
Я не могу найти никаких веских аргументов в руководстве пользователя , кроме упоминания о том, что вам придется заново создавать файлы / etc / passwd и / etc / group, если ваши пользователи и группы меняются, что, я полагаю, достаточно прилично причина. Я могу сказать, что этот процесс несколько ошибочен для новичков.
источник
Предполагая, что вы заинтересованы в изменении оболочки, используемой в терминале mintty / Cygwin, он сначала проверяет переменную среды SHELL, затем (теперь уже не существует) файл passwd, затем возвращается к / bin / sh, что, похоже, и делает. по умолчанию.
Я был в состоянии установить переменную окружения SHELL в Windows , чтобы
/usr/bin/zsh
и она работала без каких - либо других изменений. Я просто изменил его для моего пользователя Windows, а не глобально.Установка переменной среды, вероятно, различается для разных версий Windows. Попробуйте найти «среду» в панели управления Windows. Для меня в Windows 7 это была Панель управления → Система → Дополнительные параметры системы, которая вызывает панель управления / диалоговое окно «Свойства системы», затем вкладку «Дополнительно», затем кнопку «Переменные среды», которая вызывает диалоговое окно «Переменные среды» и затем создает новая переменная пользователя
SHELL
с именем со значением/usr/bin/zsh
. Тогда ОК, откажись от всего этого и начни новую мяту.источник
Просто подумал, что добавлю этот ответ на случай, если он поможет любому, кто его ищет. Если вы используете chere (который добавляет опцию «Bash prompt here» в контекстное меню правой папки любой папки), вы можете установить для него значение zsh («Zsh Prompt Here») с помощью:
источник
Если вы хотите использовать оболочку Cygwin внутри IDE Intellij, используйте следующую настройку в настройках / инструментах / терминале
Это встроит оболочку cygwin в intellij, а не в новое окно
источник