不一致的 bash 行为

不一致的 bash 行为

我有一个 Windows 10 操作系统,其中安装了 WSL2 Ubuntu 20.04。

它运行良好,但我遇到了一些奇怪的 bash 行为,我似乎无法解决。

如果我通过开始或从文件资源管理器中打开 bash,bash 将从 Windows 主目录 (c/users/myname) 启动并读取其中的 .bashrc 文件。

如果我通过命令行、powershell 或在资源管理器地址栏中输入它来执行 bash,它会通过 WSL2 挂载打开并读取 bash.bashrc 和 .bashrc,其中后者位于我的 ubuntu 主目录中。

我希望 ubuntu 在从 Windows 环境中调用时能够始终在 Windows 环境中启动。我需要更改哪些文件/配置才能更改 bash.exe 的启动。

谢谢!

答案1

由于您已确认已安装 Git Bash,因此我们可以自信地识别问题。编辑:我在评论中看到您已经找到了解决方法,但我几乎已经写完了答案,所以我会保留它。

wsl简短回答:使用命令而不是启动 WSL bash。这样可以避免 WSL 和 Git Bash 之间的混淆。

较长的答案:

当你在“开始”菜单中输入“bash”时,它会找到Windows 应用程序名称中包含“bash”,即“Git Bash”。安装 Windows 版 Git 后,它会在开始菜单中添加几个程序(当然,除非您选择“不要创建“开始菜单”文件夹”),当然也包括 Git Bash。也许 Windows 版 Git 的旧版本只是将其称为“Bash”,但最新版本使用“Git Bash”,以避免混淆。

另一方面,当你bash在命令行运行时,它是不是寻找开始菜单条目;它正在寻找你的可执行文件PATHbash.exe当然,这是一种较旧、不再推荐的启动 WSL 的方式。虽然你仍然使用它,更好的选择是切换到较新的wsl.exe(或只是wsl)命令。这将避免任何混淆,并为您提供大量附加选项(请参阅wsl --help),例如:

  • 备份你的 WSL 实例
  • 从另一个用户开始使用,wsl -u root无需sudo
  • 运行命令而不启动任何 shell(实际上是通过使命令作为 shell 运行)使用wsl --exec(例如wsl --exec chshwsl --exec tmux等)
  • 更改正在使用的 WSL 版本
  • (很快,预览版)安装其他驱动器,无论是 Windows 还是虚拟
  • 以及更多

相关内容