windows - 如何从 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的远程开发插件。
解决方案
我创建了一个简短的脚本来处理我最常用的三个 atom 命令(我使用带有 WSL 的 Ubuntu):
atom
atom .
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 路径的烦人警告消息pushd
:popd
...
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported. Defaulting to Windows directory
推荐阅读
- bash - bash 变量的远程命令后跟 if 语句,但输出读取不正确?
- flutter - 文本字段焦点触发 UI 的重建
- android - 执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障
- java - OSX Catalina 以管理员权限打破了 osascript 启动
- python - 按索引和列排序
- android - 如何通过使用带有子元素的Scrollview将底部导航保持在底部是LinearLayout作为根
- python - 这个脚本运行良好,直到他停下来并显示错误
- c++ - 双模板对象
- c# - 如何将 f(x) = sin(x)*sin(x) 函数拟合到您的数据中?
- python-3.x - 如何在图像 JtessBoxEditor 上创建框?