Archive:KDE System Administration/Configuration Files (zh CN)

From KDE TechBase

文件格式

KDE将一种简单的基于文本的文件格式用于它所有的配置文件。这种文件包含多组由关键字(即配置选项)与其值(即赋值给配置选项的参数值)所组成的条目。所有的KDE配置文件使用UTF-8编码方式,而一般不用ASCII。

每个组的开始处使用放置在方括号内的组名标示出来。所有属于该组的关键字-值项目放置在这个组开始处标签的后面数行。每个组结束于下一组的开始处标签或该配置文件的结尾。

在文件开始处的第一个组应当不会作为默认的组被优先处理(换句话说,所有的组应当是平权的)。

范例:一份简单的配置文件

以下的例子展示了一个包含两个组的配置文件。第一组包含了关键字"LargeCursor"和"SingleClick",第二组包含了关键字"Show hidden files"和"Sort by"。

[KDE]
LargeCursor=false
SingleClick=true

[KFileDialog Settings]
Show hidden files=false
Sort by=Name

组内的每个条目都是一个使用 “ 关键字=值 ” 的格式的等式。关键字能够包含空格,例外也可在其后添加放置于方括号内的附加选项,即可以是 “关键 字=值” 、 “关键字[选项]=值” 或 “关键 字[选项]=值”。

等号后面的部分是每个条目的值。所有在等号周围和条目末尾的空格都将被忽略。

如果一个值需要包含一个空格在它的开始或结尾,这种情况空格可用一个反斜杠家一个s来代替。

由许多其他这样的反斜杠替代码,以下是完整列表:

  • \s”能够被当作空格使用
  • \t”能够被当作tab使用
  • \r”作为回车符
  • \n”作为换行符(另起一行)
  • \\”表示反斜杠自身

范例:空白

以下的这个配置文件片段与上一个范例中的是等价的。关键字与值周围的空白将被忽略。

[KDE]
LargeCursor=          false
SingleClick = true

[KFileDialog Settings]
   Show hidden files   = false
Sort by =Name

范例:保留空白

在接下来的例子中"Caption"项的值以两个空格开始,同时"Description"项包含三行文字。带反斜杠的换行符(“\n”)被用于分割不同行。

[Preview Image]
Caption=\s My Caption
Description=This is\na very long\ndescription.

配置文件中的空行将被忽略,就像对待起始于井字符“#”的行一样。井字符能被用于在配置文件中添加注释,但是需要注意的是当KDE应用程序从新读取配置文件时,这些注释将不被读取。

配置

在许多[[../KDE Filesystem Hierarchy#Location_of_the_Directory_Trees|KDE目录树]]的share/config子目录下可能有多个同名的配置文件。 如果是那样的话,这些配置文件中的所有信息将被逐条地合并在一起。如果某个组内同一个关键字在不止一个地方被定义过,处于最高优先权目录树下的键值将被读取。在$KDEHOME下的配置文件总是拥有最高优先权。如果某个组中的某个关键字在同一个文件中被定义了多次,那么最后出现的那次的值将被采用。

KDE的级联配置方案能够为用户提供在系统默认设置的基础上对某些个别设置进行个性化修改的能力。当用户保存在$KDEHOME下得个人配置与系统的默认配置相重复时,KDE将不会覆写个人设置,换句话说,当个人设置与系统的默认设置相重复或相矛盾时,以个人设置为准。这种方式使得默认设置可以立即传播给所有用户,即用户不必在个人的配置文件中再另外添加已有的配置选项。注意这与以前使用/etc/skel来为用户提供默认设置的不同,对/etc/skel的改变只在创建一个新的用户账户时,设置才会生效。

当管理员不希望默认设置被个别用户随意修改时,默认设置可以被锁定。

Shell扩展

之所以称作“Shell扩展”,是因为这种技术能够用于提供更多动态的默认值。通过shell扩展,你能够从环境变量或shell命令输出的值来构建配置文件中的键值。

要想使用一个配置项的Shell扩展,关键字后必须紧跟[$e]。通常扩展部分在第一次被使用后写入用户配置文件。为了阻止这种情况的发生,我们推荐使用[$ie]来锁定相应的配置项。

范例:动态项

在接下来的例子中"Host"项的值由hostname程序的输出决定。这个设置同样可以被锁定,以保证该值始终是被动态决定的。

"Email"项的值是由$USER和$HOST这两个环境变量的组合来决定的。当joe登录到joes_host时,这将使得该值等于"joe@joes_host"。该设置是未被锁定的。

[Mail Settings]
Host[$ie]=$(hostname)
Email[$e]=${USER}@${HOST}

本地化

所有的配置项都能按照语言码来加以标记。因此,桌面用户选用的语言一般会查询相应的键值。如果默认语言(美国英语)已被选用,或者没有与所选语言相符合的标记,没有加标记的项将被使用。

范例:UTF8 In Keys

在接下来的例子中"Caption"项的值依赖于所用的语言。如果用户选用了法语(语言码为fr),项目的值就将是"Ma Légende",在其余的情况下将使用"My Caption"值。

[Preview Image]
Caption=My Caption
Caption[fr]=Ma Légende

锁定

为了防止用户无视默认设置,你能够对全系统配置文件的设置进行锁定。设置能够被单独地锁定,无论是每组,还是每个文件。一个单独的项目能够通过在关键字后添加[$i]来加以锁定。一组的项目也同样能够通过在组的名字后面放置[$i]来加以锁定。为了锁定整个项目,同样可以用[$i]在单独的一行中为该文件创建一个条目。

范例:Using [$i]

在接下来的例子中"Caption"项已经被锁定。所有在"Mail Settings"组中的项目同样也已经被锁定。

[Preview Image]
Caption[$i]=My Caption

[Mail Settings][$i]
Host[$e]=$(hostname)
Email=waldo@kde.org

如果一个项目已经被锁定,那么其他优先于默认设置的项目将被忽略。

任何由应用程序作出设置但又被锁定的变更将在无提示的情况下被放弃。应用程序对被锁定设置的反应可能很不相同。一些应用程序会辨认出某个设置被锁定了,并且会隐藏那些在用户介面上允许用户改变这些设置的元素。其他应用程序将会继续在它们的用户介面上提供这些选项,即使这些选项已不再起作用了。这同样也有可能正在运行的程序实际上仍然可以改变这些设置。在这种情况下,被变更的设置将仅在该程序仍在运行的期间起作用。当该程序被重启后,相关设置将变回被锁定的默认设置。

编辑器

如果你不愿意使用一种文本编辑器的话,那么KConfigEditor提供了一种编辑KDE配置文件的方便的方法。

要想在命令行中进行脚本编程或改写文件,命令行应用程序kwriteconfig将会是十分有用的。可以用kwriteconfig同时创建一个配置文件名、一个组、一个关键字、一个可选的类型和一个键值,例如:

kwriteconfig --file kickerrc \
             --group General \
             --key AutoHidePanel \
             --type bool \
             true