我有一个 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
在命令行运行时,它是不是寻找开始菜单条目;它正在寻找你的可执行文件PATH
。 bash.exe
当然,这是一种较旧、不再推荐的启动 WSL 的方式。虽然你能仍然使用它,更好的选择是切换到较新的wsl.exe
(或只是wsl
)命令。这将避免任何混淆,并为您提供大量附加选项(请参阅wsl --help
),例如:
- 备份你的 WSL 实例
- 从另一个用户开始使用,
wsl -u root
无需sudo
- 运行命令而不启动任何 shell(实际上是通过使命令作为 shell 运行)使用
wsl --exec
(例如wsl --exec chsh
,wsl --exec tmux
等) - 更改正在使用的 WSL 版本
- (很快,预览版)安装其他驱动器,无论是 Windows 还是虚拟
- 以及更多