如何让 WSL 默认启动我的登录 shell?

如何让 WSL 默认启动我的登录 shell?

“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

相关内容