更新

更新

我正在尝试按照说明从 WSL Ubuntu 运行 Notepad++这里

即使没有别名,当我尝试运行 notepad++ 时,也会收到如下无效参数错误:

peter@Peter-PC3:~$ /mnt/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe  
/mnt/c/Program Files (x86)/Notepad++/notepad++.exe: Invalid argument

即使没有任何参数,我也会遇到同样的错误

知道为什么它无法运行吗?

更新

在阅读了一些回复后,我看到了类似的东西。它可以找到 notepad++.exe,因为它位于 /mnt/c/Windows/system32 和 /mnt/c/Windows 路径上。

就像 @harrymc 一样,如果我先 cd 到目录,它就可以工作,但如果我从另一个目录执行此操作,它就不起作用。从另一个目录,它不会将其视为notepad++。如果我使用notepad++.exe,我会得到同样的错误。

peter@Peter-PC3:~$ /mnt/c/Program\ Files\ \(x86\)/Notepad++/notepad.exe                                         
-bash: /mnt/c/Program Files (x86)/Notepad++/notepad.exe: No such file or directory                                                          
peter@Peter-PC3:~$ /mnt/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe                                       
/mnt/c/Program Files (x86)/Notepad++/notepad++.exe: Invalid argument

创建符号链接/usr/bin似乎也没什么区别

peter@Peter-PC3:/usr/bin$ pwd  
/usr/bin  
peter@Peter-PC3:/usr/bin$ ls -al note*  
lrwxrwxrwx 1 peter peter 50 Feb 14 15:06 notepad++.exe -> '/mnt/c/Program Files (x86)/Notepad++/notepad++.exe'  
peter@Peter-PC3:/usr/bin$ notepad++ /etc/passwd  
notepad++: command not found

更新 2

我刚刚安装了 64 位版本的 Notepad++,但不太可能与该程序有关。它没有,但它现在位于Program Files

这是所要求的输出:

peter@Peter-PC3:/mnt/c/Program Files/Notepad++$ pwd
/mnt/c/Program Files/Notepad++
peter@Peter-PC3:/mnt/c/Program Files/Notepad++$ ls -la notepad*
-r-xr-xr-x 1 root root 6443032 Jan 26 21:27 notepad++.exe

如果我在目录中并明确输入notepad++.exe,则它会起作用。但请注意,如果我输入note然后尝试自动完成,它只会找到 和notepad.exe,而不会找到notepad++.exe

如果我从任何其他目录输入,/mnt/c/Program\ Files/Notepad++/notepad++.exe则会出现错误:/mnt/c/Program Files/Notepad++/notepad++.exe: Invalid argument

答案1

对我有用的唯一配方是:

cd "/mnt/c/Program Files (x86)/Notepad++/"
notepad.exe

这一逻辑后续行动确实不是工作:

"/mnt/c/Program Files (x86)/Notepad++/notepad.exe"

编辑

谜底揭晓: 所调用的记事本就是这个: C:\Windows\System32\notepad.exe
这是因为C:\Windows\System32\它位于 PATH 中。

另一个事实:Notepad++ 存在于 C:\Program Files\Notepad++,因此不在您要寻找的地方。

但是,尽管该命令ls 可以在该文件夹中列出notepad++.exe,但它绝对拒绝执行它,无论是直接命名,还是使用任何公式'notepad++.exe'notepad*.exenotepad\+\+.exe

这似乎是 WSL bash 中一些不起眼的错误。你可以在 Github 上报告此问题 微软/WSL.或许开发者会给出一个解释。

答案2

解决这个问题的一个简单方法是创建一个指向您想要的东西的软链接并将其放在路径中。

我自己刚刚这样做了(并且效果非常好!)。

  1. sudo ln -s /mnt/c/Program\ Files/Notepad++/notepad++.exe /usr/bin/notepad++.exe

  2. notepad++.exe /etc/passwd随时随地。砰!麦克风掉落。 在此处输入图片描述

问题解决了。软(和硬)链接是你的好朋友。尤其是在 Linux 中。

相关内容