我正在尝试在 cygwin 中将我的默认 shell 从 bash 更改为 zsh。
- 正常的 unix 命令
chsh
在 cygwin 上不可用 - 看来,现有版本的 cygwin 中不再使用 etc/passwd 文件。
那么还可以怎样更改默认 shell 呢?
答案1
答案取决于您如何启动 Cygwin。
如果你使用以下命令启动 Cygwin启动Cygwin/Cygwin.bat
,修改(通常C:\cygwin\
是 或)的最后一行C:\cygwin64\
。
如果你使用以下命令启动 Cygwin薄荷味,然后添加 shell 作为参数: mintty /usr/bin/zsh -
答案2
如果直接运行mintty.exe
或者从开始菜单或桌面运行 Cygwin Terminal(它是 mintty.exe 的快捷方式),则可以将 Windows 中的 SHELL 环境变量设置为/usr/bin/zsh
。
在 Windows 7 上:
- 按 Windows 键。
- 开始输入“环境”。
- 出现后,选择“编辑您的帐户的环境变量”。
其余部分应该是不言自明的。
答案3
Cygwin 无需创建 passwd 文件,不建议1,你可以编辑 /etc/nsswitch.conf. 添加或编辑以下行:
db_shell:/usr/bin/fish
这种方法的优缺点是,如果您有多个用户,此更改将影响所有用户。优点是它非常简单。唯一的缺点是您必须重新启动 Cygwin。
如果你做进行此更改后使用 mkpasswd,它将为所有允许登录的用户使用新的默认 shell。
1 mkpasswd 文档说明如下:
不要使用此命令生成本地 /etc/passwd 文件,除非您确实需要。有关详细信息,请参阅 Cygwin 用户指南。
我真的找不到任何可靠的理由用户手册,除了提到如果您的用户和组发生变化,您必须重新生成 /etc/passwd 和 /etc/group 文件,我想这是一个足够充分的理由。我可以说这个过程对于新手来说有点容易出错。
答案4
我的托管服务 dreamhost.com 在其用户编辑屏幕中有一个选项框。它可以在四种不同的 shell 中进行选择,看起来有点像这样
User Type: (Click one of these three buttons)
* FTP user - allows login via FTP only.
* SFTP user - allows login via SFTP only.
* Shell user - allows login via both SSH and FTP.
Shell Type: ____/usr/bin/tcsh_____
Disallow FTP?: ___