我在Windows上安装了Android Studio和JDK 8,但我的WSL上没有JDK cli。当我键入java
或时javac
,找不到命令。我在这里遵循了建议,现在可以通过键入java.exe
和来从WSL访问命令javac.exe
,但是我不想指定.exe
扩展名。我的想法是添加一个指向可执行文件的符号链接,而不必指定可执行文件(/mnt/c/...
)的路径,因为这已在WSL PATH中完成。那么我可以创建一个指向PATH中某个位置的符号链接吗?如果这没有意义,这就是我尝试的方法:
sudo ln -s -t java.exe java
我知道了"failed to access 'java.exe': No such file or directory"
。但这正是我想要实现的:在PATH中指向可执行文件的符号链接,而无需指定可执行文件的实际路径,因为PATH已经具有该链接。如果我疯了,这是愚蠢的/不可能的/不必要的,您可以说这是答案,我会接受的!:-D
您需要在可执行文件前加上路径。或者,您可以修改LinuxPATH
环境变量并附加Windows路径(以前缀/mnt/c/
)。
来自:Windows子系统,用于Linux与Windows的互操作性
从WSL调用Windows二进制文件
Linux的Windows子系统可以直接从WSL命令行调用Windows二进制文件。以这种方式运行的应用程序具有以下属性:
- 保留工作目录作为WSL命令提示符,但以下情况除外。
- 具有与bash.exe进程相同的权限。
- 以活动的Windows用户身份运行。
- 就像直接从CMD提示符下执行一样,出现在Windows任务管理器中。
例子:
$ /mnt/c/Windows/System32/notepad.exe
在WSL中,这些可执行文件的处理方式类似于本机Linux可执行文件。这意味着将目录添加到Linux路径,并且命令之间的管道按预期工作。例子:
$ export PATH=$PATH:/mnt/c/Windows/System32 $ notepad.exe $ ipconfig.exe | grep IPv4 | cut -d: -f2 $ ls -la | findstr.exe foo.txt $ cmd.exe /c dir
Windows二进制文件必须包括文件扩展名,匹配文件大小写并且是可执行的。非可执行文件(包括批处理脚本和类似命令)
dir
可以与/mnt/c/Windows/System32/cmd.exe /C
command一起运行。例子:
$ /mnt/c/Windows/System32/cmd.exe /C dir $ /mnt/c/Windows/System32/PING.EXE www.microsoft.com
参数未经修改就传递给Windows二进制文件。
即使在Linux中,符号链接也包含路径。以以下命令为例:
$ ls -la /bin | grep ^l
(...SNIP...)
lrwxrwxrwx 1 root root 20 Jun 27 09:49 systemd -> /lib/systemd
systemd
与链接/lib/systemd/systemd
。因此,您的符号链接为:
sudo ln -s -t java.exe java
我想(因为我不是链接专家)需要看起来像这样:
sudo ln -s -t /mnt/c/Windows/Path/To/java.exe java
alias
代替符号链接~/.bashrc
因此,我将在文件中创建一个别名,而不是符号链接:
alias java='/mnt/c/WindowsPathTo/java.exe'
然后,无论何时键入java
,mumbo-jumbo都会代表您键入。遵守传递的所有参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句