Ответы:
Если вы не используете 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
Я добавил это к соединению.
На странице руководства сказано:
SYNOPSIS mkpasswd [OPTIONS]... OPTIONS Don't use this command to generate a local /etc/passwd file, unless you really need one. See the Cygwin User's Guide for more information. -c,--current Print current user. DESCRIPTION The mkpasswd program can be used to create a /etc/passwd file. Cygwin doesn't need this file, because it reads user information from the Windows account databases, but you can add an /etc/passwd file, for instance if your machine is often dis‐ connected from its domain controller. Note that this information is static, in contrast to the informa‐ tion automatically gathered by Cygwin from the Windows account databases. If you change the user information on your system, you'll need to regenerate the passwd file for it to have the new information. For very simple needs, an entry for the current user can be cre‐ ated by using the option -c.
(Я не знаю, почему интервал так "выключен" ...)
Затем я использовал следующую команду:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
В следующий раз, когда вы откроете терминал Cygwin, он перейдет прямо в zsh
И это, я думаю, то, что вы просили.
Я просто добавляю bin
каталог в каталоге cygwin в свою переменную среды Windows Path и затем создаю ярлык для:
mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login
или просто измените ярлык по умолчанию в меню запуска 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 . Добавьте или измените следующую строку:
db_shell: / usr / bin / zsh
Недостатком этого метода является то, что если у вас есть несколько пользователей, это изменение влияет на всех из них. С другой стороны, все очень просто. Единственный улов в том, что вам нужно перезагрузить Cygwin.
Если вы делаете использовать mkpasswd после этого изменения, он будет использовать новую оболочку по умолчанию для всех пользователей, которые могут войти в систему .
1 Документация mkpasswd гласит:
Не используйте эту команду для создания локального файла / etc / passwd, если он вам действительно не нужен. См. Руководство пользователя Cygwin для получения дополнительной информации.
Я не могу найти никаких веских аргументов в руководстве пользователя , кроме упоминания о том, что вам придется заново создавать файлы / 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») с помощью:
chere -i -t mintty -s zsh