为什么 bash 翻译文件不包含所有错误文本?

use*_*er1 7 bash locale

我从GNU's site下载了最新版本的 Bash 源代码(现在是 4.4)。

fr.popo目录中打开法语翻译文件 ( )并搜索“权限被拒绝”。没有结果。

当我打开终端并运行时cd /var/log/apache2,出现错误:bash: cd: /var/log/apache2: Permission denied. 所以这是一个 Bash 错误,但它没有包含在提到的文件中。另外,当我grep -rn . -e "denied"在 bash 源目录中时,我只得到 2 个结果,这两个结果都来自文件“COPYING”。

此外,当我使用以下命令更改 Bash 语言时:export LC_ALL=fr_FR我得到bash: cd: /var/log/apache2: Permission non accordée. 更改 Bash 语言会更改此错误,因此它再次证明这确实是 Bash 消息。

有谁知道为什么这个错误没有包含在 po 文件中?

Ste*_*itt 15

字符串来自strerror(3),它将错误编号映射到消息。在这种情况下,它是 mapping EACCES。字符串(及其翻译)包含在您的 C 库中。