我试图在cygwin中将默认shell从bash更改为zsh。
- 正常的Unix命令
chsh
在cygwin上不可用 - cygwin的现有版本中似乎不再使用etc / passwd文件。
那么还可以如何更改默认外壳?
我试图在cygwin中将默认shell从bash更改为zsh。
chsh
在cygwin上不可用那么还可以如何更改默认外壳?
Answers:
答案取决于您如何启动Cygwin。
如果使用Cygwin.bat启动Cygwin ,请修改/Cygwin.bat
(通常是C:\cygwin\
或C:\cygwin64\
)的最后一行。
如果您以minty开头Cygwin,则将外壳作为参数添加。 mintty /usr/bin/zsh -
CygWin\bin\zsh.exe
。sh.exe --login
将启动Bash,您将如何更改?还是没关系吗?我想象在... 之前sh.exe --login
不必要地执行了sh
zsh
set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -i
hth
sh.exe
。现在,我意识到我只是没有正确阅读您的信息:-)
-l
以下内容使其成为登录外壳: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
如果mintty.exe
直接运行或从开始菜单或桌面(这是mintty.exe的快捷方式)运行Cygwin Terminal,则可以将Windows中的SHELL环境变量设置为/usr/bin/zsh
。
在Windows 7上:
其余的应该是不言自明的。
从我对堆栈溢出的回答中复制:
而不是创建一个passwd文件,其中的Cygwin 建议对1,你可以编辑/etc/nsswitch.conf中。添加或编辑以下行:
db_shell:/ usr / bin / fish
此方法的缺点是,如果您有多个用户,则此更改会影响所有这些用户。向上/向上的方面是,它非常简单。唯一的问题是您必须重新启动Cygwin。
如果在此更改后确实使用了mkpasswd,它将对所有允许登录的用户使用新的默认外壳程序。
1 mkpasswd文档说:
除非确实需要,否则不要使用此命令来生成本地/ etc / passwd文件。有关更多信息,请参见《 Cygwin用户指南》。
除了在用户指南和组中进行更改,您必须重新生成/ etc / passwd和/ etc / group文件之外,我在用户指南中找不到真正可靠的理由,我想这已经足够了原因。我可以说这个过程对于新手来说很容易出错。
sh.exe
,以zsh.exe
在Conemu设置>启动>任务>的bash的Cygwin击>set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i