WSL2 - VSCode 的 shell 命令“code”不再在 Linux 终端中工作

dre*_*mon 10 command-line windows-subsystem-for-linux 20.04

总体而言,我对 Linux 和 WSL 还很陌生。我能够使用code .VSCode 打开当前目录,但删除了一些我不记得的内容后,它就不再工作了。我输入命令,它就挂在那里。

我已经删除了 Ubuntu-20.04 实例并重新创建了它,但它仍然无法工作。还检查了我的 $PATH,它似乎就在那里。

另外,add shell commandVSCode 中的 不出现,所以我无法卸载并重新安装 shell 快捷方式。

有人有什么想法吗?

drewbie@drewbie:/$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/dotnet/:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files (x86)/QuickTime/QTSystem/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/Go/bin:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/ProgramData/DockerDesktop/version-bin:/mnt/c/Users/Andrew/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Program Files/heroku/bin:/mnt/c/Users/Andrew/AppData/Local/GitHubDesktop/bin:/mnt/c/Users/Andrew/go/bin:/snap/bin
Run Code Online (Sandbox Code Playgroud)

输入代码后。 它就坐在那里

其中和哪个

drewbie@drewbie:~$ whereis code
code: /mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/bin/code /mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/bin/code.cmd
drewbie@drewbie:~$ which code
/mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/bin/code
Run Code Online (Sandbox Code Playgroud)

完成@NotTheDr01ds 在下面的线程中所说的操作后

drewbie@drewbie:~$ vi "$(which code)"
drewbie@drewbie:~$ code .
+ [  = true ]
+ COMMIT=899d46d82c4c95423fb7e10e68eba52050e30ba3
+ APP_NAME=code
+ QUALITY=stable
+ NAME=Code
+ DATAFOLDER=.vscode
+ realpath /mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/bin/code
+ dirname /mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/bin/code
+ dirname /mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/bin
+ VSCODE_PATH=/mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code
+ ELECTRON=/mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/Code.exe
+ IN_WSL=false
+ [ -n Ubuntu-20.04 ]
+ IN_WSL=true
+ [ true = true ]
+ export WSLENV=ELECTRON_RUN_AS_NODE/w:WT_SESSION::WT_PROFILE_ID
+ wslpath -m /mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/resources/app/out/cli.js
+ CLI=C:/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/resources/app/out/cli.js
+ WSL_EXT_ID=ms-vscode-remote.remote-wsl
+ ELECTRON_RUN_AS_NODE=1 /mnt/c/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/Code.exe C:/Users/Andrew/AppData/Local/Programs/Microsoft VS Code/resources/app/out/cli.js --ms-enable-electron-run-as-node --locate-extension ms-vscode-remote.remote-wsl
Run Code Online (Sandbox Code Playgroud)

小智 7

由于接受的答案依赖于副作用,对我不起作用,而第二个答案是完全不可接受的(完全重新安装 WSL),我进行了更多搜索,找到了一种更安全有效的方法

来自StackOverflow 中这个较旧的问题,由rrmesquita回答:

在 WSL 终端中,键入rm -r ~/.vscode-server以删除 VS Code WSL 服务器。

退出终端并从 PowerShell/Cmd 中运行wsl --shutdown. 然后您可以重新登录 WSL 并运行code . ,它应该可以正常工作。

回答是因为谷歌引导我来到这里,也许这会让其他人的生活更轻松 =)


小智 6

我认为这个问题是由 VSCode 的更新引起的,该更新是自动发生的。

解决方法:

  1. 在 Windows 中打开 VSCode

  2. 打开远程资源管理器

    远程浏览器

  3. 单击感兴趣的 WSL 目标中的文件夹:您会看到这会导致一些重新安装

  4. 现在您可以返回使用$ code .WSL2 中文件夹中的命令,就像以前一样


clo*_*tio 5

我刚刚将其添加到我的 .bashrc 中:

alias code='/mnt/c/Users/[YOUR USER DIR NAME]/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code'
Run Code Online (Sandbox Code Playgroud)