Answers:
除非您将cygwin用作多用户环境(在这种情况下chsh
,请像在标准环境中那样使用)。
否则,你只需要改变cygwin.bat运行zsh -l -i
,而不是bash --login -i
,它会运行一个登录shell。
当然,如果要在启动时运行多个Shell,只需创建一组.bat
文件即可加载不同的Shell。(sh
,ksh
,csh
,fish
等等)
我觉得我应该更新它,以提供有关这样做的信息,chsh
但在Unix端仍要这样做。编辑/etc/passwd
文件并替换的出现/bin/bash
有/bin/zsh
。(这实际上是chsh
可以执行的操作,但是通过这种方式,您可以一次性为所有用户执行此操作。)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
并编辑新创建的/etc/passwd
文件
如果我没看错您的问题,那么您正在寻找的是除杂物 供应之外的其他东西 (理所当然,这本身就很酷)。
当前版本的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 / etc / passwd
下次打开Cygwin Terminal时,它将直接进入zsh
我认为,这就是您所要求的。
我只是将bin
cygwin目录中的目录添加到Windows路径环境变量中,然后创建一个快捷方式:
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
没有必要的,因为这将是一个登录shell,而不是interactive
。
从我对堆栈溢出的回答中复制:
而不是创建一个passwd文件,其中的Cygwin 建议对1,你可以编辑/etc/nsswitch.conf中。添加或编辑以下行:
db_shell:/ usr / bin / zsh
此方法的缺点/缺点是,如果您有多个用户,则此更改会影响所有这些用户。向上/向上的方面是,它非常简单。唯一的问题是您必须重新启动Cygwin。
如果在此更改后确实使用了mkpasswd,它将对所有允许登录的用户使用新的默认外壳程序。
1 mkpasswd文档说:
除非确实需要,否则不要使用此命令来生成本地/ etc / passwd文件。有关更多信息,请参见《 Cygwin用户指南》。
除了在用户指南和组中进行更改,您必须重新生成/ etc / passwd和/ etc / group文件之外,我在用户指南中找不到任何可靠的推论,我想这已经足够了原因。我可以说这个过程对于新手来说很容易出错。
假设您有兴趣更改mintty / Cygwin Terminal中使用的shell,它将首先检查SHELL环境变量,然后检查(现在不存在)passwd文件,然后退回到/ bin / sh,这似乎是在做默认。
我能够将Windows中的SHELL环境变量设置为,/usr/bin/zsh
并且无需任何其他更改即可工作。我只是为Windows用户而不是全局用户更改了它。
设置环境变量可能因Windows的不同版本而异。尝试在Windows控制面板中搜索“环境”。对我而言,在Windows 7下是控制面板→系统→高级系统设置,它会弹出系统属性控制面板/对话框,然后是高级选项卡,然后是环境变量按钮,这会弹出环境变量对话框,然后创建任命了新的用户变量SHELL
与价值/usr/bin/zsh
。然后确定退出所有步骤并开始新的薄荷味。