如何在Cygwin中更改默认Shell?


29

我试图在cygwin中将默认shell从bash更改为zsh。

  1. 正常的Unix命令chsh在cygwin上不可用
  2. cygwin的现有版本中似乎不再使用etc / passwd文件。

那么还可以如何更改默认外壳?

Answers:


22

答案取决于您如何启动Cygwin。

如果使用Cygwin.bat启动Cygwin ,请修改/Cygwin.bat(通常是C:\cygwin\C:\cygwin64\)的最后一行。

如果您以minty开头Cygwin,则将外壳作为参数添加。 mintty /usr/bin/zsh -


2
谢谢,我在用Conemu。不得不改变sh.exe,以zsh.exe在Conemu设置>启动>任务>的bash的Cygwin击>set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i
gyaani_guy

@gyaani_guy我只是使用ConEmu执行CygWin\bin\zsh.exesh.exe --login将启动Bash,您将如何更改?还是没关系吗?我想象在... 之前sh.exe --login不必要地执行了shzsh
deed02392

@ deed02392我不确定我是否理解..但我使用的确切命令是set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -ihth
gyaani_guy

@gyaani_guy谢谢,我很困惑,因为在您的第一条评论中,您似乎暗示您以开头zsh sh.exe。现在,我意识到我只是没有正确阅读您的信息:-)
deed02392 '16

3
薄荷的例子对我来说不是很有效。它一直存在问题,直到我通过添加-l以下内容使其成为登录外壳: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
Morgan

18

如果mintty.exe直接运行或从开始菜单或桌面(这是mintty.exe的快捷方式)运行Cygwin Terminal,则可以将Windows中的SHELL环境变量设置为/usr/bin/zsh

在Windows 7上:

  1. 按Windows键。
  2. 开始输入“环境”。
  3. 出现时,选择“为您的帐户编辑环境变量”。

其余的应该是不言自明的。


5
这严重需要更多的赞成票。我从未在任何地方看到此文档,并且这显然是预期的方法。
凯文·米尔斯

1
对于那些不想依靠搜索来找到合适的面板的人,右键单击开始菜单,然后选择“系统”以启动系统控制面板。然后,从左侧列中单击“高级系统设置”。在弹出的“系统属性”窗口中,单击“环境变量...”以启动环境变量编辑器。
David C.

完美地工作!
bkunzi01

16

我对堆栈溢出的回答中复制:


而不是创建一个passwd文件,其中的Cygwin 建议对1,你可以编辑/etc/nsswitch.conf中。添加或编辑以下行:

db_shell:/ usr / bin / fish

此方法的缺点是,如果您有多个用户,则此更改会影响所有这些用户。向上/向上的方面是,它非常简单。唯一的问题是您必须重新启动Cygwin。

如果在此更改后确实使用了mkpasswd,它将对所有允许登录的用户使用新的默认外壳程序。


1 mkpasswd文档说:

除非确实需要,否则不要使用此命令来生成本地/ etc / passwd文件。有关更多信息,请参见《 Cygwin用户指南》。

除了在用户指南和组中进行更改,您必须重新生成/ etc / passwd和/ etc / group文件之外,我在用户指南中找不到真正可靠的理由,我想这已经足够了原因。我可以说这个过程对于新手来说很容易出错。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.