基本上我的问题与这个问题密切相关:
https://stackoverflow.com/questions/21905380/how-do-i-get-cygwin-xterm-to-use-bash-and-not-sh
我还想将 bash 设置为 xterm 的默认 shell(我正在使用 Cygwin)。不久前,bash 是 xterm 的默认 shell,但最近由于某些原因,它发生了变化。
现在,我确实有上面链接中给出的内容的文件 /etc/shells。但这没有帮助。
重现我不满意的行为的最简单方法是在 shell(例如 bash)中键入“xterm”。新终端以 sh 而不是 bash 开头。
我知道可以执行“xterm -e bash”,但这并不令人满意,因为每次都必须给出这个标志。
希望有人可以帮忙。
答案1
我发现,问题发布在这里之后,一个新的答案被发布在
https://stackoverflow.com/questions/21905380/how-do-i-get-cygwin-xterm-to-use-bash-and-not-sh
这是问题本身给出的链接。最后一个答案帮助我解决了这个问题。所以这就是可能重要的事项的完整列表:
对于正版 Linux 系统,可以使用“chsh -s”设置默认 shell。但是 Cygwin 中似乎没有“chsh”命令。
为了确保 bash 是 Cygwin 下 xterm 的默认 shell,您至少需要执行以下操作:
1)确保已安装 bash(只需检查“哪个 bash”)
2) 确保 bash 在 /etc/shells 中列出(如果不存在则应创建此文件,请参阅上面的链接以找到 /etc/shells 的示例)
3)确保在 /etc/passwd 中正确设置了相关用户的默认 shell,包括路径,例如 /bin/bash
但是,所有这些都对我没什么帮助。只有最后一点才真正让 xterm 默认以 bash 启动:
4) 文件 /bin/bash(如果需要,请更改为有效路径)应设置为 chmod 755 而不是 700。这意味着所有用户都应该能够执行它。请注意,Cygwin 中的 chmod 权限不一定源自您在 Windows 下的 cygwin 文件夹中设置的 Windows 权限。
所以我只需输入“chmod 755 /bin/bash”,它就会执行应有的操作!
似乎在 Cygwin 最近的一次更新中,/bin/bash 的 chmod 权限发生了改变,导致了上面描述的奇怪行为。
非常希望能够帮助到别人,这样我的痛苦就没有白费。
PS 要检查您当前正在运行哪个 shell,请使用“echo $SHELL”或“ps -p $$”。如果结果不同,则第二个应该可信。例如,当您在终端中启动新 shell 时,$SHELL 可能不会改变,但“ps -p $$”的输出会改变