WSL2 - VSCode 的 shell 指令「code」不再在 Linux 終端機中運作

WSL2 - VSCode 的 shell 指令「code」不再在 Linux 終端機中運作

整體而言,我對 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

輸入代碼後。它就坐在那裡

其中和哪個

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

完成@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

答案1

我認為這個問題是由 VSCode 的更新引起的,該更新是自動發生的。

解決方法:

  1. 在 Windows 中開啟 VSCode

  2. 開啟遠端資源管理器

    遠端瀏覽器

  3. 點擊感興趣的 WSL 目標中的資料夾:您會看到這會導致一些重新安裝

  4. 現在您可以返回使用$ code .WSL2 中資料夾中的命令,就像以前一樣

答案2

由於接受的答案依賴副作用,對我不起作用,而第二個答案是完全不可接受的(完全重新安裝 WSL),我搜尋了更多,發現更安全有效的方法:

StackOverflow 中較舊的問題,由以下人員回答梅斯基塔:

在 WSL 終端機中,鍵入rm -r ~/.vscode-server以刪除 VS Code WSL 伺服器。

退出終端並從 PowerShell/Cmd 中執行wsl --shutdown.然後您可以重新登入 WSL 並運行code . ,它應該可以正常工作。

回答是因為Google引導我來到這裡,也許這會讓其他人的生活更輕鬆 =)

答案3

我剛剛將其添加到我的 .bashrc 中:

alias code='/mnt/c/Users/[YOUR USER DIR NAME]/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code'

答案4

與 @cloudcreatordotio 相比,我的工作方式有點不同,我將此行添加到我的 .bashrc 中,步驟如下所示:

  1. 打開你的 ubuntu shell

  2. 打開.bashrc

    nano .bashrc
    
  3. 新增以下行

    alias code="'/mnt/c/Users/[YOUR USER DIR NAME]/AppData/Local/Programs/Microsoft VS Code/Code.exe'"
    

相關內容