Windows Emacs shell / shell无法执行ack perl脚本(语言环境错误)

时间:2013-01-11 17:59:07

标签: perl emacs cygwin locale ack

在常规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

它会按预期给我结果。

1 个答案:

答案 0 :(得分:0)

此问题与ack本身无关,但与珍珠有关,它是使用Ack语言编写的。perl报告说,运行emacs的环境未设置语言环境设置。将以下行添加到您在其中运行emacs的任何环境中:

export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

注意:运行ack hello < NUL仅能掩盖问题,但不能解决问题。