我正在尝试按照说明从 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*.exe
或
notepad\+\+.exe
。
这似乎是 WSL bash 中一些不起眼的错误。你可以在 Github 上报告此问题 微软/WSL.或许开发者会给出一个解释。