zsh з Cygwin


35

Як я можу налаштувати zsh як оболонку за замовчуванням під Cygwin?

Відповіді:


45

Якщо ви не використовуєте cygwin як середовище багатокористувача (у такому випадку використовуйте chshяк у стандартних умовах).

В іншому випадку ви просто зміните cygwin.bat на запуск zsh -l -iзамість цього, bash --login -iі він буде працювати як оболонка для входу.  

Звичайно, якщо ви хочете запустити кілька оболонок із запуску, просто створіть набір .batфайлів для завантаження різних оболонок. ( sh, ksh, csh, І fishт.д.)

Оновити ...

Я відчув, що мені слід оновити це, щоб надати інформацію про це, chshале не роблячи це на кінці Unix. Відредагуйте /etc/passwdфайл і замінити входження /bin/bashз /bin/zsh. (Це ефективно, що chshбуло б зробити, але таким чином ви зробите це для всіх користувачів за один раз.)


15
Типово більше немає / etc / passwd у cygwin, і chsh більше не підтримується. Ця відповідь не допомагає (10 квітня 2014 р.).
Джефф Снайдер

Ідіть додому @THESorcerer ви п'яні
окудо

2
@JeffSnider запустіть mkpasswd -l -p "$(cygpath -H)" > /etc/passwdта відредагуйте новостворений /etc/passwdфайл
BrunoLM

17

Якщо я правильно прочитав ваше запитання, ви шукаєте щось інше, ніж те, що постачає 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

І це, я думаю, це те, що ви просили.


17

Я просто додаю binкаталог в каталог cygwin до своєї змінної середовища Windows Path, а потім створюю ярлик для:

mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login

або просто змінити ярлик початкового меню cygwin за замовчуванням на такий же.


2
Мені довелося використовувати /bin/zshзамість zsh.
край

1
the bin directory in the cygwin directory to my Windows Path Environment Variableпрацює без цієї зміни для мене
ruslo

iне потрібно , тому що це буде Ввійти оболонки і не interactive.
Тімо

7

Скопійовано з моєї відповіді на переповнення стека :


Замість створення файлу passwd, який Cygwin рекомендує проти 1 , ви можете редагувати /etc/nsswitch.conf . Додайте або відредагуйте наступний рядок:

db_shell: / usr / bin / zsh

Сторона вниз / вгору цього методу полягає в тому, що якщо у вас є кілька користувачів, ця зміна впливає на всіх них. Сторона вгору / вгору полягає в тому, що вона мертва проста. Єдина уловка полягає в тому, що вам доведеться перезапустити Cygwin.

Якщо ви робите використовувати mkpasswd після цього зміни, він буде використовувати нову оболонку по замовчуванням для всіх користувачів, які можуть увійти в систему .


1 Документація mkpasswd говорить про це:

Не використовуйте цю команду для створення локального / etc / passwd-файлу, якщо він вам справді не потрібен. Додаткову інформацію див. У посібнику користувача Cygwin.

Насправді я не можу знайти жодних твердих міркувань у посібнику користувача , окрім згадки про те, що вам доведеться відновлювати файли / etc / passwd та / etc / group, якщо ваші користувачі та групи змінюються, що, напевно, є досить пристойним. причина. Я можу сказати, що процес дещо схильний до помилок у новачків.


Це слід позначити як прийняте.
Арда

4

Якщо припустити, що ви зацікавлені в зміні оболонки, що використовується в монетному дворі / терміналі Cygwin, спочатку перевіряється змінна середовище SHELL, потім (неіснуючий) файл passwd, потім повертається до / bin / sh, що, як видається, робить за замовчуванням.

Я був в змозі встановити змінну оточення SHELL в Windows , щоб /usr/bin/zshі вона працювала без будь - яких інших змін. Я просто змінив це для свого користувача Windows, а не глобально.

Встановлення змінної середовища, ймовірно, залежить від різних версій Windows. Спробуйте пошукати "середовище" на панелі керування Windows. Для мене під Windows 7 це була панель керування → Система → Додаткові параметри системи, яка відкриває панель / діалогове вікно «Властивості системи», потім вкладку «Додаткові», потім кнопку «Змінні середовища», яка відкриває діалогове вікно «Змінні середовища», а потім створити нову змінну користувача, названу SHELLзі значенням /usr/bin/zsh. Тоді добре відступіться від усього цього і почніть нову м'ятину.


Тепер це слід ретельно підсилити! Найпростіший спосіб, який не зіпсується із внутрішніми махінаціями Cygwin, і легко оборотний!
pepoluan

1

Я просто подумав, що я додам цю відповідь, якщо вона допоможе тому, хто її шукає. Якщо ви використовуєте chere (який додає опцію "Bash prompt here" в контекстне меню правої кнопки миші будь-якої папки), ви можете встановити його на zsh ("Zsh Prompt Here") за допомогою:

chere -i -t mintty -s zsh

0

Якщо ви хочете використовувати оболонку Cygwin всередині IDE Intellij, використовуйте наступні налаштування всередині параметрів / інструментів / терміналу

c:\cygwin\bin\zsh.exe -l -i

Це вбудує оболонку cygwin всередину intellij, а не породить нове вікно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.