Як змінити оболонку за замовчуванням у Cygwin?


29

Я намагаюся змінити стандартну оболонку з bash на zsh у cygwin.

  1. Звичайна команда unix chshнедоступна для cygwin
  2. Файл etc / passwd, здається, вже не використовується в існуючих версіях cygwin.

То як ще можна змінити оболонку за замовчуванням?

Відповіді:


22

Відповідь залежить від того, як ви запускаєте Cygwin.

Якщо ви запускаєте Cygwin з Cygwin.bat , змініть останній рядок /Cygwin.bat(зазвичай C:\cygwin\або C:\cygwin64\).

Якщо ви запускаєте Cygwin з м'яти , додайте оболонку як параметр. mintty /usr/bin/zsh -


2
Дякую, я використовую Conemu. Довелося змінити sh.exeна zsh.exeв Налаштування Conemu> запуск> завдання> баш Cygwin Bash>set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i
gyaani_guy

@gyaani_guy Я просто використовую ConEmu для виконання CygWin\bin\zsh.exe. sh.exe --loginзапустить Bash, як ти це зміниш? Або все одно це не має значення? Я гадаю, sh.exe --loginце зайве виконувати shраніше zsh...
deed02392

@ deed02392 Я не впевнений, що розумію .. але точна команда, яку я використовую, є set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -ihth
gyaani_guy

@gyaani_guy спасибі, я був розгублений, тому що в першому коментарі ти, здавалося, мав на увазі, що ти починаєш з zsh sh.exe. Тепер я розумію, що я просто неправильно не прочитав ваше повідомлення :-)
deed02392

3
Приклад монетного двору для мене не дуже працював. У нього виникли проблеми, поки я не зробив це оболонкою для входу, додавши -l: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
Морган

18

Якщо ви запускаєте mintty.exeбезпосередньо або запускаєте Cygwin Terminal з меню "Пуск" або на робочому столі (це ярлик до mintty.exe), ви можете встановити змінну середовища SHELL в Windows на /usr/bin/zsh.

У Windows 7:

  1. Натисніть клавішу Windows.
  2. Почніть вводити "оточення".
  3. Коли він з'явиться, виберіть "Редагувати змінні середовища для свого облікового запису".

Решта повинна бути роз'яснювальною.


5
Це серйозно потребує більшої кількості голосів. Я ніколи не бачив цього документально ніде, і це, очевидно, призначений метод.
Кевін Міллс

1
Для тих, хто не хоче покладатися на пошук, щоб знайти відповідну панель, клацніть правою кнопкою миші меню «Пуск» та виберіть «Система», щоб запустити панель управління системою. Потім натисніть "Розширені налаштування системи" у лівій колонці. У спливаючому вікні "Властивості системи" натисніть "Змінні середовища ...", щоб запустити редактор змінних середовищ.
Девід К.

Працювали чудово!
bkunzi01

16

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


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

db_shell: / usr / bin / fish

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

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


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

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

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


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