参考:https://www.ibm.com/developerworks/cn/linux/management/configuration/index.html
前言
配置文件,即对执行程序进行参数配置的文件。配置文件里面存放程序启动时需要对其进行配置的信息,比如首次启动QQ时,会出现一些填写注册信息的控件,如是否记住密码、下次自动登录等复选框,如若执行,这些注册信息就被写进相应程序的配置文件里,当程序下次再启动时就会自动读取配置文件,对程序进行配置,实现程序的自启动。
Linux环境下也不例外,几乎每个程序的行为都可以通过修改其配置文件来按照个人需要去定制。
Linux环境下有没有一个标准的配置文件格式
没有。在 Linux环境下,每个程序员都可以自由选择自己喜欢的配置文件格式。可选的格式很多,从简约的 /etc/shells 文件(包含被一个换行符分开的 shell 的列表),到 Apache 的复杂的 /etc/httpd.conf 文件。
什么是系统配置文件
内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意:这些文件不是明确地由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd 文件。相反,程序应该调用系统库的 getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。
Linux 系统中大多数配置文件都在 /etc 目录中。和用户程序相关的配置文件介绍如下:
Linux中,有无数的“用户”程序。最常见的一种用户程序配置文件是 /etc/lynx.cfg。这是著名的文本浏览器 lynx 的配置文件。通过这个文件,您可以定义代理服务器、要使用的字符集等。下面的代码样本展示了 lynx.cfg 文件的一部分,修改这部分代码可以改变 Linux 系统的代理服务器设置。
.h1 proxy
.h2 HTTP_PROXY
.h2 HTTPS_PROXY
.h2 FTP_PROXY
.h2 GOPHER_PROXY
.h2 NEWS_PROXY
.h2 NNTP_PROXY
# Lynx version 2.2 and beyond supports the use of proxy servers that can act as
# firewall gateways and caching servers. They are preferable to the older
# gateway servers. Each protocol used by Lynx can be mapped separately using
# PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have
# not set them externally, you can set them at run time via this configuration file.
# They will not override external settings. The no_proxy variable can be used
# to inhibit proxying to selected regions of the Web (see below). Note that on
# VMS these proxy variables are set as process logicals rather than symbols, to
# preserve lowercasing, and will outlive the Lynx image.
#
.ex 15
http_proxy:http://proxy3.in.ibm.com:80/
ftp_proxy:http://proxy3.in.ibm.com:80/
#http_proxy:http://penguin.in.ibm.com:8080
#ftp_proxy:http://penguin.in.ibm.com:8080/
.h2 NO_PROXY
# The no_proxy variable can be a comma-separated list of strings defining
# no-proxy zones in the DNS domain name space. If a tail substring of the
# domain-path for a host matches one of these strings, transactions with that
# node will not be proxied.
.ex
no_proxy:demiurge.in.ibm.com, demiurge
用户程序
用户程序在每次启动时都会读取其配置文件。其中,第一次启动时将从 /etc/ 目录中存在的文件读取缺省配置。然后,用户可以通过使用rc和.(点)文件来定制程序。
用户配置文件:rc文件和.(点)文件
在 /etc/ 目录下修改配置文件可实现程序配置。但是,“普通”用户不能简单地进入 /etc/目录去更改配置文件,因为从文件系统的角度来看,配置文件的所有者是 root 用户!这也是大多数用户程序都定义两个配置文件的原因:第一个是“系统”级别的,位于 /etc/;另一个属于用户“专用”,可以在用户的主目录中来找到。
例如,一个用户在其系统中安装了非常有用的wget实用程序。那么,在目录/etc/ 中有一个 /etc/wgetrc 文件;同时,在用户的主目录中有一个名为 .wgetrc 的文件,它描述了用户定制的配置(只有在该用户运行 wget 命令时,才会加载这个配置文件)。其它用户在他们自己的主目录(/home/other)中也可以有 .wgetrc 文件;当然,只有这些用户运行 wget 命令时,才会读取这个文件。换句话说,/etc/wgetrc 文件为 wget 提供了“缺省”值,而 /home/xxx/.wgetrc 文件列举了某个用户的“定制项”。但是,这只是“一般规则”,并非所有情况都如此。例如,像 pine 程序,在 /etc/ 中并没有任何文件,它只在用户主目录中有一个定制配置文件,名为 .pinerc;而其它程序可能只有 /etc/ 中的缺省配置文件,而且可能不允许用户“定制”这些配置文件(/etc 目录中只有少数 config. 文件是这种情况)。
通常使用的 rc 和 .(点)文件
文件名 | 描述 |
---|---|
~/.bash_login | 请参考“man bash”。如果 ~/.bash_profile 不存在,bash 则将 ~/.bash_login 作为 ~/.bash_profile 处理。 |
~/.bash_logout | 请参考“man bash”。在退出时由 bash 登录 shell 引用。 |
~/.bash_profile | 由 bash 登录 shell 引用 /etc/profile 之后引用。 |
~/.bash_history | 先前执行的命令的列表。 |
~/.bashrc | 请参考“man bash”。由 bash 非登录交互式 shell 引用(没有其它文件)。除非设置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。 |
~/.emacs | 启动时由 emac 读取。 |
~/.forward | 如果这里包含一个电子邮件地址,那么所有发往 ~ 的所有者的邮件都会被转发到这个电子邮件地址。 |
~/.fvwmrc ~/.fvwm2rc | fvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。 |
~/.hushlogin | 请参考“man login”。引起“无提示”登录(没有邮件通知、上次登录信息或者 MOD 信息)。 |
~/.mail.rc | 邮件程序的用户初始化文件。 |
~/.ncftp/ | ncftp 程序的目录;包含书签、日志、宏、首选项和跟踪信息。请参阅 man ncftp。ncftp 的目的是为因特网标准文件传输协议(Internet standard File Transfer Protocol)提供一个强大而灵活的接口。它旨在替换系统所使用的标准的 ftp 程序。 |
~/.profile | 请参考“man bash”。如果 ~/.bash_profile 和 ~/.bash_login 文件不存在,bash 则将 ~/.profile 作为 ~/.bash_profile 处理,并被其它继承 Bourn 的 shell 使用。 |
~/.pinerc | Pine 配置 |
~/.muttrc | Mutt 配置 |
~/.exrc | 这个文件可以控制 vi 的配置。 示例:set ai sm ruler 在此文件中写入上面一行会让 vi 设置自动缩进、匹配括号、显示行号和行-列这几个选项。 |
~/.vimrc | 缺省的“Vim”配置文件。和 .exrc 一样。 |
~/.gtkrc | GNOME 工具包(GNOME Toolkit)。 |
~/.kderc | KDE 配置。 |
~/.netrc | ftp 缺省登录名和密码。 |
~/.rhosts | 由 r- 工具(如 rsh、rlogin 等等)使用。因为冒充主机很容易,所以安全性非常低。
|
~/.rpmrc | 请参阅“man rpm”。如果 /etc/rpmrc 不存在则由 rpm 读取。 |
~/.signature | 消息文本,将自动附加在从此帐号发出的邮件末尾。 |
~/.twmrc | twm( The Window Manager)的配置文件。 |
~/.xinitrc | 启动时由 X 读取(而不是由 xinit 脚本读取)。通常会启动一些程序。 示例:exec /usr/sbin/startkde 如果该文件中存在上面这行内容,那么在从这个帐号发出 startx 命令时,这一行就会启动“KDE 视窗管理器”(KDE Window Manager)。 |
~/.xmodmaprc | 此文件被传送到 xmodmap 程序,而且可以被命名为任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。 |
~/.xserverrc | 如果 xinit 可以找到要执行的 X,xinit 就会将该文件作为 X 服务器运行。 |
~/News/Sent-Message-IDs | gnus 的缺省邮件历史文件。 |
~/.Xauthority | 由 xdm 程序读和写,以处理权限。请参阅 X、xdm 和 xauth 联机帮助页。 |
~/.Xdefaults, ~/.Xdefaults-hostname | 在主机 hostname 的启动过程中由 X 应用程序读取。如果找不到 -hostname 文件,则查找 .Xdefaults 文件。 |
~/.Xmodmap | 指向 .xmodmaprc;Red Hat 有使用这个名称的 .xinitrc 文件。 |
~/.Xresources | 通常是传送到 xrdb 以加载 X 资源数据库的文件的名称,旨在避免应用程序需要读取一个很长的 .Xdefaults 文件这样的情况。(有些情况曾经使用了 ~/.Xres。) |
~/mbox | 用户的旧邮件。 |