zsh 与 Cygwin

zsh 与 Cygwin

如何将 zsh 配置为 Cygwin 下的默认 shell?

答案1

除非您将 cygwin 用作多用户环境(在这种情况下,chsh请像在标准环境下一样使用。)

否则,您只需将 cygwin.bat 更改为运行zsh -l -i,而不是bash --login -i,它将作为登录 shell 运行。  

当然,如果您想从启动时运行多个 shell,只需创建一组.bat文件来加载不同的 shell。(sh,,,等)kshcshfish

更新...

我觉得我应该更新这个,以提供关于如何在没有 的情况chsh下在 Unix 端执行此操作的信息。编辑/etc/passwd文件并将出现的 替换为/bin/bash/bin/zsh(这实际上是chsh可以做的,但这样你就可以对所有的用户一气呵成。)

答案2

如果我没看错的话,你正在寻找的不是 切雷 用品(当然,这本身就很酷)。

当前版本的 Cygwin 没有 密码文件 /etc/passwd 文件,并且我正在使用的系统将 Windows 帐户信息保存在不受我控制的域数据库中。因此, 奇什 不再受支持。

我还发现 bash 没有被硬编码到 启动xwin 脚本,也不是硬编码在任何 .bat 文件中。事实证明,您根本不需要摆弄 .bat 文件。

在搜索如何更改我的 shell 时,我发现了一些关于 创建密码

我把它添加到混合物中。

手册页上说:

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 终端时,它将直接进入 zsh

我想,这就是您所要求的。

答案3

我只需将bincygwin 目录中的目录添加到我的 Windows 路径环境变量中,然后创建一个快捷方式:

mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login

或者只是将默认的 cygwin 开始菜单快捷方式更改为相同的。

答案4

假设您有兴趣更改 mintty/Cygwin 终端中使用的 shell,它首先检查 SHELL 环境变量,然后检查(现在不存在的)passwd 文件,然后回退到 /bin/sh,这似乎是它默认执行的操作。

我可以设置 SHELL 环境变量在 Windows 中并且/usr/bin/zsh它无需任何其他更改即可工作。我只是为我的 Windows 用户更改了它,而不是全局更改。

设置环境变量可能因 Windows 的不同版本而异。尝试在 Windows 控制面板中搜索“环境”。对我来说,在 Windows 7 下,它是控制面板 → 系统 → 高级系统设置,这将打开系统属性控制面板/对话框,然后是高级选项卡,然后是环境变量按钮,这将打开环境变量对话框,然后创建一个名为的新用户变量,SHELL其值为/usr/bin/zsh。然后确定退出所有这些并启动新的 mintty。

相关内容