当前位置: 首页 > 知识库问答 >
问题:

在Linux Ubuntu的Windows子系统中链接Windows命令

花烨
2023-03-14
npm i
node app
npm run serve
# etc...

而现在又出现了新的情况。我有一个使用nightmare.js(改进了但类似于phantom.js)的项目,它将在运行npm I时安装电子无头浏览器。在WSL中运行npmi将安装Ubuntu版本的Electrone,当尝试运行时不会发生任何事情,浏览器将不会打开。这是合乎逻辑的,因为WSL Ubuntu没有可视化环境,因此无法在其中打开浏览器。

如果我使用PowerShell或CMD运行npm I(将使用安装在Windows上的npm,而不是WSL),将安装Windows版本的Electrone,并且我可以在PowerShell中使用Node App运行它,它将按照预期工作,打开浏览器等。

这创造了一个有趣的先例。看起来我有时需要用Windows命令来运行我的应用程序。与直接在WSL中执行npm Inode app不同,我必须切换到CMD或PowerShell并在那里执行它们,以便使用windows版本的npm和node而不是WSL Ubuntu的。这不是很方便,我想做这一切从WSL。有关此行为的示例,有来自Microsoft的Visual Studio代码。安装了Remote-WSL插件后,我可以在WSL Ubuntu内部运行code命令,并且VSCode将在Windows中打开。

这里是我的问题:是否有一种方法可以将WSL Ubuntu中的命令链接到主机Windows系统,就像用vscode所做的那样?理想情况下,我希望在我的WSL Ubuntu中有类似的命令:windows-npmiwindows-node app,它们将在主机Windows系统上运行npmnode,而不是在WSL Ubuntu上运行相同的命令。

共有1个答案

丌官晨
2023-03-14

这个问题几乎没有引起注意,所以我决定自己解决。我仍然在寻找更好的/原生的解决方案,但这里有一个变通办法,我想到了。

允许WSL用户从linux子系统中在主机Windows系统上运行任何CMD命令。

  • Windows 10
  • WSL
  • node.js
  • NPM

Node和NPM必须同时安装在linux子系统和Windows主机系统上。

wsl-link必须分别安装在子系统和Windows主机上

在子系统Linux上:

npm i wsl-link -g
npm i wsl-link -g
npm i pm2 pm2-windows-startup -g
pm2-startup install
wsl-link-pm2
pm2 save
pm2 status

在Windows start server上(如果未使用带有pm2的启动安装程序):

wsl-link

在子系统linux上使用(NPM-V将在主机Windows上运行):

wsl-link npm -v

在子系统linux上设置一个项目(或使用现有项目):

mkdir wsl-link-test
cd wsl-link-test
touch app.js
npm init
const Nightmare = require('nightmare');

(async () => {
  await Nightmare({
    show: true
  })
  .goto('https://google.com');
})();
wsl-link npm i nightmare --save
wsl-link node app
 类似资料:
  • 所以Linux的新windows子系统(2019年windows 4月10日发布)已经发布,我的ubuntu子系统也升级了。我应该能够打开我的windows资源管理器中的Linux文件夹,但我没有得到正确的文件夹时,我运行该命令。

  • 我使用的是WSL(Windows Subsystem for Linux),版本是Ubuntu20.04 LTS。 显示错误: 我试过通过apt-get安装它,但没有安装候选。

  • 在完成了所有的安装过程之后,我得到了以下错误: 我已经通过PowerShell手动安装了ubuntu。https://docs.microsoft.com/en-us/windows/wsl/install-manual 当我输入Ubuntu并点击enter时,我收到一条服务尚未启动的消息。

  • 虽然在windows上“原生地”运行Linux版本的python、pip等是令人惊奇的,但我想使用一个合适的IDE来实现。由于SSHD兼容性尚未实现,我正在尝试让PyCharm将Linux python识别为本地解释器。 安装Windows Linux子系统后,键入 但是对于我尝试的任何变体,我总是得到“sdk似乎无效”的说法。因为我不确定PyCharm到底在做什么来“验证”SDK,所以这很难克服

  • 我希望从VS2017调试一个Linux C++控制台应用程序,如以下教程所示: 使用Windows Subsystem For Linux在Visual Studio中编写和调试Linux C应用程序 从visual studio针对Linux的windows子系统 我已经在WSL Ubuntu 16.04安装中安装了gdbserver和openssh-server,正在运行,但是我无法从VS20

  • 问题内容: 当尝试在支持bash的最新Windows 10版本上使用Oracle JDK的Linux版本时,无论何时尝试调用二进制文件,我都遇到提示挂起的问题。 键入甚至挂起之类的简单内容,我也必须终止该过程以恢复控制。 有人在工作吗? 问题答案: 我想澄清一下,截至2016年12月9日,您肯定可以在Windows 10的Ubuntu Bash上安装Java 8,并且@Karl Horton是正确