Jes*_*wak 10 windows perl6 git-bash raku
使用Windows,我安装了Rakudo Star和Git并确保C:\rakudo\bin并且C:\rakudo\share\perl6\site\bin位于Path环境变量中。
现在,perl6随后在Git Bash中键入会产生command not found错误,而命令确实在powershell和中起作用cmd。echo $PATH在Git Bash中输入内容再次确认上面的文件夹也在我的path变量中。
如何perl6在Git Bash中使用该命令?
注意:使用moar(moar.exe)与perl6在Git Bash中相同的文件夹中。同时点击Tab会显示的自动完成建议moar,但不会perl6。
Bash不会运行Windows批处理文件,因此您必须解决该问题。
一个简单的解决方案可能是添加您这样的内容.bashrc:
alias perl6='cmd /c perl6.bat'
Run Code Online (Sandbox Code Playgroud)
或者,您可以转换perl6.bat为Shell脚本并将其放在您的中$PATH。我使用以下内容:
#!/bin/sh
PATH=/cygdrive/c/rakudo/bin:/cygdrive/c/rakudo/share/perl6/site/bin:$PATH
unset HOME
moar --execname="$0" \
--libpath='C:\rakudo\share\nqp\lib' \
--libpath='C:\rakudo\share\perl6\lib' \
--libpath='C:\rakudo\share\perl6\runtime' \
'C:\rakudo\share\perl6\runtime\perl6.moarvm' \
"$@"
Run Code Online (Sandbox Code Playgroud)
这是使用Cygwin;您可能需要对它进行一些调整以适应Git bash(我不知道,没有经验)。
另外,如果您使用的是Windows 10,我建议您安装WSL,并在WSL bash提示符中使用perl6。与Cygwin下的Windows版本相比,这对我来说运行起来更加流畅。
我尝试通过perl6您提供的链接进行安装,并且可以在Windows 10的Cygwin上确认相同的行为。
如果我在Cygwin终端窗口中键入:
$ perl6
-bash: perl6: command not found
$ echo $PATH
/usr/local/bin:/usr/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Users/Bruker/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/rakudo/bin:/cygdrive/c/rakudo/share/perl6/site/bin
$ cd /cygdrive/c/rakudo/bin
$ ls -l
-rwxrwx---+ 1 SYSTEM SYSTEM 930663 May 11 2017 libgcc_s_seh-1.dll
-rwxrwx---+ 1 SYSTEM SYSTEM 136146 Mar 30 20:55 libmoar.dll.a
-rwxrwx---+ 1 SYSTEM SYSTEM 56978 May 11 2017 libwinpthread-1.dll
-rwxrwx---+ 1 SYSTEM SYSTEM 7021172 Mar 30 20:55 moar.dll
-rwxrwx---+ 1 SYSTEM SYSTEM 64066 Mar 30 20:55 moar.exe
-rwxrwx---+ 1 SYSTEM SYSTEM 126 Mar 30 20:56 nqp.bat
-rwxrwx---+ 1 SYSTEM SYSTEM 126 Mar 30 20:56 nqp-m.bat
-rwxrwx---+ 1 SYSTEM SYSTEM 242 Mar 30 20:56 perl6.bat
-rwxrwx---+ 1 SYSTEM SYSTEM 248 Mar 30 20:56 perl6-debug-m.bat
-rwxrwx---+ 1 SYSTEM SYSTEM 242 Mar 30 20:56 perl6-m.bat
$ cat perl6.bat
@ "C:\rakudo\bin\moar" --execname="%~dpf0" --libpath="C:\rakudo\share\nqp\lib" --libpath="C:\rakudo\share\nqp\lib" --libpath="C:\rakudo\share/perl6/lib" --libpath="C:\rakudo\share/perl6/runtime" C:\rakudo\share\perl6\runtime\perl6.moarvm %*
Run Code Online (Sandbox Code Playgroud)
请注意,bat文件中的路径不是cygwin路径。这样可以解释为什么它不起作用。
例如:
$ "C:\rakudo\bin\moar"
-bash: C:\rakudo\bin\moar: command not found
$ /cygdrive/c/rakudo/bin/moar
ERROR: Missing input file.
USAGE: moar [--crash] [--libpath=...] input.moarvm [program args]
moar --dump input.moarvm
moar --help
[...]
Run Code Online (Sandbox Code Playgroud)
更新:
我还尝试安装Git Bash,然后从MINGW64终端窗口安装:
$ echo $PATH
/c/Users/Bruker/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/Bruker/bin:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/WINDOWS/System32/OpenSSH:/c/Users/Bruker/AppData/Local/Microsoft/WindowsApps:/usr/bin/vendor_perl:/usr/bin/core_perl
$ PATH=/c/rakudo/bin:$PATH
$ perl6
bash: perl6: command not found
$ moar
ERROR: Missing input file.
USAGE: moar [--crash] [--libpath=...] input.moarvm [program args]
moar --dump input.moarvm
moar --help
[...]
Run Code Online (Sandbox Code Playgroud)
请注意,这moar是一个.exe文件,perl6而是一个.bat文件。
perl6根据此问题,对于Cygwin 来说似乎也不是“正式”的。
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |