OnWorks Linux 和 Windows 在线工作站

商标

工作站免费在线托管

<上一页 | 内容 | 下一页>

7.7. Bash Shell 启动文件‌

shell程序 / bin / bash (以下简称“外壳”)使用一组启动文件来帮助创建一个运行环境。每个文件都有特定的用途,可能会以不同的方式影响登录和交互环境。 中的文件 /等 目录提供全局设置。 如果主目录中存在等效文件,则它可能会覆盖全局设置。

成功登录后将启动交互式登录 shell,使用 /bin/登录,通过阅读 / etc / passwd文件 文件。 交互式非登录 shell 在命令行启动(例如, [提示]$/ bin / bash)。 当 shell 脚本运行时,通常会出现一个非交互式 shell。 它是非交互式的,因为它正在处理脚本而不是在命令之间等待用户输入。

欲了解更多信息,请参阅 信息重击 在下面 Bash 启动文件和交互式 Shell 部分。

文件 / etc / profile 在〜/ .bash_profile 当 shell 作为交互式登录 shell 被调用时读取。

该基地 / etc / profile 下面设置一些本地语言支持所需的环境变量。 正确设置它们会导致:

• 翻译成母语的程序输出

• 将字符正确分类为字母、数字和其他类别。 这对于 打坏 在非英语语言环境的命令行中正确接受非 ASCII 字符

• 正确的国家字母排序顺序

• 合适的默认纸张尺寸

• 正确格式化货币、时间和日期值

更换 下面是所需语言的两字母代码(例如,“en”)和 带有相应国家/地区的两个字母代码(例如,“GB”)。 应替换为您选择的语言环境的规范 charmap。 也可能存在诸如“@euro”之类的可选修饰符。

可以通过运行以下命令获得 Glibc 支持的所有语言环境的列表:


locale -a

locale -a

Charmap 可以有多个别名,例如,“ISO-8859-1”也称为“iso8859-1”和“iso88591”。 某些应用程序无法正确处理各种同义词(例如,要求将“UTF-8”写为“UTF-8”,而不是“utf8”),因此在大多数情况下为特定区域设置选择规范名称是最安全的。 要确定规范名称,请运行以下命令,其中 是由给出的输出 locale -a 用于您的首选语言环境(在我们的示例中为“en_GB.iso88591”)。


LC_ALL = 语言环境图

LC_ALL = 语言环境图


对于“en_GB.iso88591”语言环境,上面的命令将打印:


ISO 8859 1

ISO 8859 1

这导致最终的语言环境设置为“en_GB.ISO-8859-1”。 在将使用上述启发式找到的区域设置添加到 Bash 启动文件之前,必须对其进行测试,这一点很重要:


LC_ALL= 语言环境 LC_ALL= 语言环境charmap LC_ALL= 语言环境 int_curr_symbol LC_ALL= 语言环境 int_prefix

LC_ALL= 语言环境 LC_ALL= 语言环境charmap LC_ALL= 语言环境 int_curr_symbol LC_ALL= 语言环境 int_prefix

上述命令应打印语言名称、语言环境使用的字符编码、当地货币以及在电话号码前拨打的前缀,以便进入该国家/地区。 如果上面的任何命令失败并显示类似于下面显示的消息,这意味着您的语言环境不是在第 6 章中安装的,或者 Glibc 的默认安装不支持。


语言环境:无法将 LC_* 设置为默认语言环境:没有这样的文件或目录

语言环境:无法将 LC_* 设置为默认语言环境:没有这样的文件或目录

如果发生这种情况,您应该使用 本地定义 命令,或考虑选择不同的语言环境。 进一步的说明假定 Glibc 没有此类错误消息。

LFS 之外的一些软件包也可能不支持您选择的语言环境。 一个例子是 X 库(X 窗口系统的一部分),如果语言环境与其内部文件中的字符映射名称之一不完全匹配,它会输出以下错误消息:


警告:Xlib 不支持语言环境,语言环境设置为 C

警告:Xlib 不支持语言环境,语言环境设置为 C

在某些情况下,Xlib 期望字符映射表以带有规范破折号的大写表示法列出。 例如,“ISO-8859-1”而不是“iso88591”。 也可以通过删除语言环境规范的 charmap 部分来找到合适的规范。 这可以通过运行 语言环境图 两种语言环境中的命令。 例如,必须将“de_DE.ISO-8859-15@euro”更改为“de_DE@euro”,以便 Xlib 识别此语言环境。

如果语言环境名称不符合他们的期望,其他包也可能无法正常运行(但不一定会显示任何错误消息)。 在这些情况下,调查其他 Linux 发行版如何支持您的语言环境可能会提供一些有用的信息。

确定正确的区域设置后,创建 / etc / profile 文件:


cat > /etc/profile << "EOF"

# 开始 /etc/profile


出口 LANG=_ . <@修饰符>


# 结束 /etc/profile

EOF

cat > /etc/profile << "EOF"

# 开始 /etc/profile


出口 LANG=_ . <@修饰符>


# 结束 /etc/profile

EOF

“C”(默认)和“en_US”(推荐给美国英语用户的)区域设置不同。 “C”使用 US-ASCII 7 位字符集,并将设置高位的字节视为无效字符。 这就是为什么,例如, ls 命令在该语言环境中用问号替换它们。 此外,尝试从 Mutt 或 Pine 发送带有此类字符的邮件会导致发送不符合 RFC 的消息(外发邮件中的字符集表示为“未知 8 位”)。 因此,只有当您确定永远不需要 8 位字符时,才可以使用“C”语言环境。


某些程序不能很好地支持基于 UTF-8 的语言环境。 正在努力记录并在可能的情况下修复此类问题,请参阅 http://www.linuxfromscratch.org/blfs/view/9.0/introduction/locale-issues.html。


OnWorks 的顶级操作系统云计算: