在 windows 上对 Git Bash 使用 "perl6" 命令
Use "perl6" command with Git Bash on windows
使用 Windows,我安装了 Rakudo Star 和 Git 并确保 C:\rakudo\bin
和 C:\rakudo\share\perl6\site\bin
在我的 Path 环境变量中。
现在,在 Git 中键入 perl6
Bash 之后会出现 command not found
错误,虽然命令在其中起作用 powershell
和 cmd
。在 Git Bash 中键入 echo $PATH
再次确认上面的文件夹也在我的路径变量中。
如何让 perl6
命令在 Git Bash 中工作?
注意: 使用与 perl6
位于同一文件夹中的 moar
(moar.exe) 在 [=45= 中同样有效] Bash。同时点击 Tab 显示 moar
的自动完成建议,它不会为 perl6
.
执行此操作
我尝试从您提供的 link 安装 perl6
,我可以在 Windows 10.
上确认 Cygwin 上的相同行为
如果我在 Cygwin 终端中输入 window:
$ 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 %*
请注意,bat 文件中的路径不是 cygwin paths。所以这可以解释为什么它不起作用..
例如:
$ "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
[...]
更新:
我也尝试安装 Git Bash,然后从 MINGW64 终端 window:
$ 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
[...]
请注意 moar
是一个 .exe
文件,而 perl6
是一个 .bat
文件。
此外,根据 this issue,Cygwin 似乎 perl6
还不是 "offical"。
Bash 没有 运行 Windows 批处理文件,所以你必须解决这个问题。
一个简单的解决方案可能是在您的 .bashrc
:
添加类似这样的内容
alias perl6='cmd /c perl6.bat'
或者,您可以将 perl6.bat
转换为 shell 脚本并将其放在 $PATH
中的某个位置。
我使用以下内容:
#!/bin/sh
PATH=/cygdrive/c/rakudo/bin:/cygdrive/c/rakudo/share/perl6/site/bin:$PATH
unset HOME
moar --execname="[=11=]" \
--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' \
"$@"
这是使用Cygwin;您可能需要为 Git bash 稍微调整一下(我不知道,没有这方面的经验)。
或者,如果您使用的是 Windows 10,我建议您安装 WSL,并在 WSL bash 提示符中改用 perl6。这个 运行 对我来说比 Cygwin 下的 Windows 版本更流畅。
使用 Windows,我安装了 Rakudo Star 和 Git 并确保 C:\rakudo\bin
和 C:\rakudo\share\perl6\site\bin
在我的 Path 环境变量中。
现在,在 Git 中键入 perl6
Bash 之后会出现 command not found
错误,虽然命令在其中起作用 powershell
和 cmd
。在 Git Bash 中键入 echo $PATH
再次确认上面的文件夹也在我的路径变量中。
如何让 perl6
命令在 Git Bash 中工作?
注意: 使用与 perl6
位于同一文件夹中的 moar
(moar.exe) 在 [=45= 中同样有效] Bash。同时点击 Tab 显示 moar
的自动完成建议,它不会为 perl6
.
我尝试从您提供的 link 安装 perl6
,我可以在 Windows 10.
如果我在 Cygwin 终端中输入 window:
$ 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 %*
请注意,bat 文件中的路径不是 cygwin paths。所以这可以解释为什么它不起作用..
例如:
$ "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
[...]
更新:
我也尝试安装 Git Bash,然后从 MINGW64 终端 window:
$ 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
[...]
请注意 moar
是一个 .exe
文件,而 perl6
是一个 .bat
文件。
此外,根据 this issue,Cygwin 似乎 perl6
还不是 "offical"。
Bash 没有 运行 Windows 批处理文件,所以你必须解决这个问题。
一个简单的解决方案可能是在您的 .bashrc
:
alias perl6='cmd /c perl6.bat'
或者,您可以将 perl6.bat
转换为 shell 脚本并将其放在 $PATH
中的某个位置。
我使用以下内容:
#!/bin/sh
PATH=/cygdrive/c/rakudo/bin:/cygdrive/c/rakudo/share/perl6/site/bin:$PATH
unset HOME
moar --execname="[=11=]" \
--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' \
"$@"
这是使用Cygwin;您可能需要为 Git bash 稍微调整一下(我不知道,没有这方面的经验)。
或者,如果您使用的是 Windows 10,我建议您安装 WSL,并在 WSL bash 提示符中改用 perl6。这个 运行 对我来说比 Cygwin 下的 Windows 版本更流畅。