在Cygwin中设置默认Shell

Ale*_*lex 23 shell cygwin fish

我已经使用Cygwin很长一段时间了.我现在想切换到bash的鱼.每个人都说你应该使用chsh -s /usr/bin/fish,但由于某种原因,chsh对我不起作用.尝试修改我的Cygwin.bat文件也不起作用,也没有更改我的/etc/passwd文件.

我真的不明白发生了什么.有人可以帮帮我吗?

P D*_*ddy 30

尝试编辑/etc/nsswitch.conf而不是/ etc/passwd

而不是创建一个passwd文件,其中的Cygwin 建议对1,你可以编辑/etc/nsswitch.conf中.添加或编辑以下行:

db_shell: /usr/bin/fish

此方法的向下/向上是,如果您有多个用户,则此更改会影响所有用户.向上/向上是它很简单.唯一的问题是你必须重新启动Cygwin.

如果您使用mkpasswd此更改后,它会使用新的默认外壳为被允许登录的所有用户.


参考

1mkpasswd文件说的:

除非确实需要,否则不要使用此命令生成本地/ etc/passwd文件.有关详细信息,请参阅Cygwin用户指南.

我无法在用户指南中找到任何可靠的推理,除了提及如果您的用户和组发生变化,您将不得不重新生成/etc/passwd/etc/group文件,我认为这是一个不错的理由.我可以说新手的过程有点容易出错.


Kir*_*hou 15

我随机遇到同样的问题,现在我为你提供我的解决方案.

0-打开cygwin通过mintty.exe

1-手动构建passwd文件(mkpasswd)

$mkpasswd > /etc/passwd
Run Code Online (Sandbox Code Playgroud)

2-更改passwd文件中的默认shell

$vim /etc/passwd
user:*:1976XX:1971XX:U-user\user,S-1-5-21-XXXX:/home/user:/bin/fish
Run Code Online (Sandbox Code Playgroud)

3-重启 mintty.exe


小智 5

我不确定这个解决方案有多“正确”,但我只是添加/usr/bin/zsh; exit到文件的底部.bashrc。您可以替换/usr/bin/zsh您选择的 shell 的路径。到目前为止似乎工作得很好。


Dav*_* C. 5

SuperUser的答案更简单.在Windows中设置SHELL环境变量.将它设置为您首选的shell(例如/bin/tcsh),新启动的shell应该使用它.

要设置环境变量:

  1. 转到"系统"控制面板(右键单击"开始"菜单,然后选择"系统")
  2. 单击左侧列中的"高级系统设置"
  3. 在弹出的"系统属性"窗口中,单击"环境变量..."按钮
  4. 在"用户变量"或"系统变量"框中(取决于您是希望更改仅影响您自己还是所有用户),单击"新建..."按钮.
  5. 在"变量名称"框中键入"SHELL",并在"变量值"框中键入您首选shell的路径(相对于Cygwin文件系统).
  6. 在三个打开的​​窗口中单击"确定"以保存更改.