在Windows上的Git Bash中使用“ perl6”命令

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中起作用cmdecho $PATH在Git Bash中输入内容再次确认上面的文件夹也在我的path变量中。

如何perl6在Git Bash中使用该命令?

注意:使用moar(moar.exe)与perl6在Git Bash中相同的文件夹中。同时点击Tab会显示的自动完成建议moar,但不会perl6

msc*_*cha 8

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版本相比,这对我来说运行起来更加流畅。


Håk*_*and 7

我尝试通过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 来说似乎也不是“正式”的。

  • 看起来Git Bash确实无法运行.bat文件,并且无法将它们视为可执行文件,这就是问题所在。从Git Bash运行`perl6`可能会需要一个.sh文件。 (2认同)
  • @JessicaNowak我想我找到了一种解决方法:您可以使用以下命令从Cygwin og Git Bash终端运行`perl6`:“ cmd” / c perl6 --version“` (2认同)