Windows Emacs shell / shell无法执行ack perl脚本

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (6)

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

它会给我预期的结果。

提问于
用户回答回答于

这个问题与ack本身没有关系,但是珍珠,Ack语言是写的.Perl报告的是你运行emacs的环境没有设置语言环境设置。将以下行添加到运行emacs的任何环境中:

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

注意:运行ack hello < NUL只会掩盖问题,但无法解决问题。

扫码关注云+社区

领取腾讯云代金券