在常规cmd.exe或cygwin termal上键入此命令可以得到预期的结果:
$ ack hello
(我有ack.bat在我的PATH中执行ack.pl)
但是,当我在Emacs中从shell或eshell运行相同的命令时,它会给我这个错误:
c:\Users\Martin>"C:\cygwin\bin\perl" /cygdrive/c/Users/Martin/Desktop/ack.pl hello
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = (unset),
LANG = "ENU"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
我试图通过SETENV将它修改为en_US.UTF-8,但是当我再次运行它时,它没有给我任何结果但冻结了。
更新 :我终于找到了解决此问题的方法。我需要的是将< NUL
添加到命令的末尾,因为它将Linux样式的NULL DEVICE解析为默认值。
现在,如果我输入:
ack hello < NUL
它会按预期给我结果。
答案 0 :(得分:0)
此问题与ack本身无关,但与珍珠有关,它是使用Ack语言编写的。perl报告说,运行emacs的环境未设置语言环境设置。将以下行添加到您在其中运行emacs的任何环境中:
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
注意:运行ack hello < NUL
仅能掩盖问题,但不能解决问题。