Win10 Bash执行Perl脚本出现LANG=ZZ locale设置警告如何解决
警告产生原因
LANG="ZZ"不属于任何合法的POSIX locale标识,这是Windows平台下各类Bash兼容环境(Git Bash、旧版本WSL、MSYS2、Cygwin)的常见适配问题:这类环境在读取Windows系统区域配置时,如果碰到无法映射的区域ID、用户自定义区域规则,就会用ZZ作为无效占位值写入LANG环境变量。
Perl启动时会校验当前配置的locale是否已安装可用,发现不存在对应ZZ的locale包时就会抛出该警告,自动回退到通用的标准C locale运行,该问题和Perl本身安装是否正常没有关联。
触发问题的脚本调用逻辑为:
$script_dir/gen-cfg.pl \ --prefix="$outdir" --no-skip-sequences-without-src \ "${!cfgset/#/${src_cfg_dir}}" \ "${src_cfg_dir}sequences-cat1.yaml" \ "${src_cfg_dir}sequences-cat3.yaml" \ "${extra_args[@]}"
触发的警告完整内容为:
perl: warning: Please check that your locale settings: LANGUAGE = (unset), LANG = "ZZ" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
修复方案
根据使用场景选择对应方案即可:
- 临时单次生效:执行脚本前,先在当前终端会话运行以下命令手动指定合法locale,配置仅对当前打开的终端窗口有效:
export LANG=C.UTF-8 export LANGUAGE=C.UTF-8
执行完成后再运行原脚本,警告就不会出现。
- 永久生效:将上述两行export配置追加到当前Bash用户目录下的
.bashrc文件末尾,保存后执行source ~/.bashrc让配置立即加载,后续所有新打开的Bash会话都会自动使用合法的UTF-8 locale,不会再传递无效的ZZ值给Perl。 - 全局生效:直接在Windows系统的用户环境变量配置中,新增名为
LANG、值为C.UTF-8的环境变量,所有读取系统环境变量的终端程序都会默认使用该合法配置。
补充说明:该警告不会阻断脚本正常运行,Perl自动回退到
Clocale的行为,不会影响mpeg-pcc-tmc13项目配套gen-cfg.pl脚本的配置生成逻辑,即使不做修复,只要脚本无其他报错,生成的配置文件均可正常使用,仅终端会多打印几行警告日志。
内容的提问来源于stack exchange,提问作者TGels
相关产品推荐
相关产品推荐

