Відповіді:
Якщо ви не використовуєте 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 / тощо / 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, якщо ваші користувачі та групи змінюються, що, напевно, є досить пристойним. причина. Я можу сказати, що процес дещо схильний до помилок у новачків.
Якщо припустити, що ви зацікавлені в зміні оболонки, що використовується в монетному дворі / терміналі 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