如何更改 Cygwin 中的默认 shell?

如何更改 Cygwin 中的默认 shell?

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

  1. 正常的 unix 命令chsh在 cygwin 上不可用
  2. 看来,现有版本的 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 上:

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

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

答案3

复制自我在 Stack Overflow 上的回答


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?:  ___

相关内容