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



在常规的cmd.exe或cygwin terminal上输入这个命令会得到预期的结果:

$ ack hello

(我有ack.bat在我的PATH中执行ack.pl)

但是,当我在Emacs的shell或shell中运行相同的命令时,它会给我这个错误:

c:UsersMartin>"C:cygwinbinperl" /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 both变量en_US来修复它。UTF-8,但是当我再次运行它时,它没有给我任何结果,而是冻结。

更新:我终于找到了解决这个问题的方法。我所需要的只是将< NUL添加到命令的末尾,因为它将Linux风格的NULL DEVICE解析为默认值。

现在如果我输入:

ack hello < NUL

这个问题与ack本身无关,而是与编写ack的语言pearl有关。perl报告的是运行emacs的环境没有设置语言环境设置。将以下行添加到运行emacs的环境中:

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

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

最新更新