“Windows 上的 Ubuntu 上的 Bash”应用程序始终启动 bash。我曾经chsh
将另一个 shell 设置为我的登录 shell。如何让 WSL 启动该 shell?
答案1
这是修复目前仅限 Insider 的版本,使用新wsl.exe
命令:
从版本 16188 开始,当运行不带参数(或带有 ~ 参数)的 bash.exe 时,bash 将作为登录 shell 启动。新的 wsl.exe 二进制文件也是如此(但 wsl 会将用户的默认 shell 作为登录 shell 启动)。
在此之前,您必须编辑快捷方式以添加命令行参数(例如-c 'exec "$SHELL" -l'
):
答案2
对于现在试图添加新答案的人来说,这里有一些历史背景。这个问题最初是在 WSL 早期的黑暗时代提出的。当时:
- Ubuntu/WSL 被称为“Windows 上的 Ubuntu 上的 Bash”
- 它是通过
bash.exe
命令启动的 - 它总是启动 Bash shell
该bash.exe
命令已被弃用一段时间,并替换为wsl.exe
@muru 提到的命令这个答案。
现在,你可以使用提到的标准 Ubuntu 方法将默认/登录 shell 更改为 Fish(或通常为任何其他 shell),例如这个答案。 简而言之:
- 确保 shell 在您的
/etc/shells
chsh -s <path_to_shell>
- 或者通常来说,
chsh -d $(which fish)
答案3
例如,要在 WSL 中启动 Ubuntu 中的 fish,请将目标设置为
C:\Windows\system32\wsl.exe --distribution Ubuntu --exec fish