首页 > 解决方案 > 如何从 WSL (Ubuntu) 中启动 Windows 上本机安装的 Atom 或 VSCode?

问题描述

我通过下载正在运行的安装程序在 Windows 10 上本地安装了 Atom 编辑器。现在我启动 WSL Ubuntu 发行版并希望使用命令从那里启动 Atom (atom-editor)atom .或使用命令启动 VSCode (visual-studio-code)code .

Atom 启动,但不在执行命令的目录中,而是显示来自C:\\Windows. 此外,Ubuntu WSL 终端显示以下错误消息:

atom .
grep: /etc/wsl.conf: No such file or directory
"\\wsl$\Ubuntu-18.04\home\wlad\projects\udemy\flask-bootcamp\Flask-Bootcamp-master"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.

抱歉,它是德语本地化的,但上面写着类似UNC-paths are not supported

(还没有测试过VSCode)

那么如何从 WSL 中使用安装在 Windows 10 上的 Atom 或 VSCode 编辑器?

**更新** 截至今天(2020 年 4 月),有一种更好的方法可以在带有 WSL、VirtualMachines (VM) 甚至容器的 Windows 上使用 VSCode。查看VSCode的远程开发插件

标签: windowsubuntuvisual-studio-codeatom-editorwindows-subsystem-for-linux

解决方案


我创建了一个简短的脚本来处理我最常用的三个 atom 命令(我使用带有 WSL 的 Ubuntu):

  1. atom
  2. atom .
  3. atom RELATIVE_PATH_FILE

这个脚本没有优化,我相信很多人会发现边缘情况,但它为我完成了工作。要使用它,只需将其放入~/.local/bin/atom并通过运行使其可执行chmod +x ~/.local/bin/atom。您可能需要重新启动 shell~/.local/bin才能添加到您的路径中。为了稍微简化一下,我将 ubuntu 安装的 WSL 网络驱动器映射到U:,因此您要么想要做同样的事情,要么在第 9 行相应地修改脚本。

#!/bin/bash

if [ -z $1 ]; then
  pushd /mnt/c > /dev/null
  /mnt/c/Windows/System32/cmd.exe /c "atom"
else
  [[ $1 = "." ]] && path=$(pwd) || path=$(realpath $1)

  winPath=$(echo "U:$path" | sed -e 's/\//\\/g')

  pushd /mnt/c > /dev/null
  /mnt/c/Windows/System32/cmd.exe /c "atom $winPath"
fi

popd > /dev/null

该脚本执行几个简单的步骤。首先,如果没有命令行参数,它只是使用cmd.exe不带参数的方式调用 atom。如果命令行参数为.,则获取当前目录的路径,否则,获取给定文件的绝对路径,使用realpath. 路径从 POSIX 转换为 Windows 格式,使用sed之前调用 atomcmd.exe之前使用,但使用路径参数。

和命令只是为了摆脱关于不支持 UNC 路径的烦人警告消息pushdpopd

...
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory

推荐阅读