我想在特定路径启动 WSL /mnt/c/Users/My User/repos
。我们可以wsl.exe ~
从主目录启动,但我似乎无法传递其他路径。
我可以将路径包装成转义字符串,但 WSL 不会将字符串作为默认参数,因此wsl.exe \"/mnt/c/Users/My User/repos\"
不起作用。
没有接受字符串的-p
或选项,我已经查看了--path
WSL 选项
和 WSL 错误/帮助 CLI 但尚未找到解决方案。
{
"colorScheme": "One Half Dark",
"commandline": "wsl.exe '/mnt/c/Users/My User/repos' -d Ubuntu-20.04",
"icon": "\ud83d\udc40",
"name": "My Windows Terminal Profile",
"tabTitle": "Windows Terminal"
}
我曾尝试过:
/mnt/c/Users/My\\ User/repos
'/mnt/c/Users/My\\ User/repos'
\"/mnt/c/Users/My\\ User/repos\"
并得到/bin/bash: /mnt/c/Users/My\ User/repos: No such file or directory
。
我也尝试过/mnt/c/Users/My\ User/repos
不使用引号、单引号'
和转义双引号\"
,JSON 解析器显示Invalid escape character in string. [jsonc(261)]
。
答案1
它有点不直观,并且与选项一样没有文档记录~
,但wsl --cd
听起来像是你正在寻找的。它实际上需要一个视窗路径规范,而不是 WSL/Linux 形式。所以:
wsl --cd "C:\Users\My User\repos"
如果您使用 Windows 终端设置 UI,那么它将自动在中为您提供正确的引用,settings.json
即:
{
"commandline": "wsl --cd \"C:\\Users\\My User\\repos"",
"name": "Profile Name"
}
只是为了好玩,这里有一个替代的、黑客的方法,你真的永远不需要使用,因为该--cd
选项是非黑客的、更好的方法:
wsl --exec bash -c "cd /mnt/c/Users/My\ User/repos; exec bash"
虽然对于这种特殊情况来说这不是最好的选择,但它确实展示了在执行 shell 之前编辑环境(在本例中)的能力PWD
。这有时很有用。
答案2
最后,我没能按照我预期的方式解决我的问题,但是这个方法有效:
{
"commandline": "wsl.exe -d Ubuntu-20.04",
"startingDirectory": "%USERPROFILE%/repos",
}