配置文件后面的rc的由来(转)

今天突然疑问为什么 babel 的配置文件叫 .babelrc, 常见的还有 .bashrc...
转载文的第一行就回答了这个问题, 后面的内容没有仔细阅读, 好似也只是作者的笔记, 暂且先复制了一番,
转载: 配置文件后面的 rc 的由来

配置文件比较正规的叫法是:运行控制文件 run control

Linux就这个范儿

4.5.3 配置文件
配置文件比较文绉绉的称呼是“运行控制文件”,存放与具体程序相关的声明信息,有些时候甚至是可执行的命令,在程序启动时解析。
对于系统级配置文件,就像在第三章中描述的那样,应该放在/etc目录下。对于用户配置文件,应该放置在用户的“home”目录下,并且一般是隐藏文件。由于Linux下隐藏文件是以“.”开头的,所以这类配置文件也被称为“点文件”。
如果一个程序的配置信息很多,那么它也可以拥有一个配置目录或点目录。每个目录应该包含数个与同一个程序相关的配置文件。多个程序共用一个配置目录或点目录,很难保证不会出问题。
配置文件或配置目录的命名方式没有严格规定,基本上是保持与其所负责的程序的名称一致即可。一些较为古老的程序会使用一些较为古老的约定:使用可执行文件名后加“rc”后缀的方式(rc代表运行控制)。比如/etc/bashrc和.bashrc,前者是Bash的系统配置文件,后者是Bash的用户配置文件。更有的一些甚至就是以rc为名的,比如/etc/rc.d目录,大多数Linux发行版本都将它作为init程序的配置目录。
配置文件的内容同样没有严格规定,不过也有一些约定俗成的规则可供参考。比如在“万般皆文本”一节中提到的DSV风格的文本内容。如果配置的程序是某种语言的解释器,那么它的内容一般会使用具体语言本身。最为著名的例子就是shell本身和Emacs。前者的bashrc文件实际上就是shell脚本程序,后者的.emacs也是用Lisp编写的。当然,为了避免用户为了编写配置文件而不得不去过多地学习新的知识,最好的办法就是能够提供一个全方位的例子配置文件,并有相关文档说明,让用户能够容易地按照例子删减。优秀的云计算平台Hadoop就是一个非常好的例子。
4.5.4 环境变量
当Linux程序启动时,它的运行环境会包含一组名字和值的关联(名字和值都是字符串)。有些是由用户手工设置的,有些是由系统在登录时设置的,有些是由shell或虚拟终端 设置的。这就是环境变量。在Linux下,环境变量一般会携带文件搜索路径、系统默认值、当前用户ID和进程ID等信息,以及其他有关程序运行时环境的关键信息。
环境变量的读取是非常容易的。在C和C++中,环境变量的值可以通过库函数getenv获得。Perl和Python在启动时,会初始化环境变量字典对象。其他语言通常也都采用以上两种方式之一。常见的系统环境变量见表4-1的描述,注意大小写。
表4-1 常见系统环境变量
变量名用  途
USER当前会话登录的账户名(BSD约定)
LOGNAME当前会话登录的账户名(System V约定)
HOME当前会话的用户home目录,这个变量非常重要,很多程序要通过这个环境变量来了解自己的用户配置文件的位置
COLUMNS(92个字符)文本控制台或虚拟终端窗口以字符为单位的列数,通过这个环境变量,CLI的程序可以了解一行内最多能输出多少字符
LINES文本控制台或虚拟终端窗口以字符为单位的行数,通过这个环境变量,CLI的程序可以了解屏幕上最多可以显示多少行文本
SHELL当前使用的shell的名字
PATHshell搜索可执行程序的目录列表
TERM(xterm)当前会话控制台或虚拟终端的名称。最大的用途就是程序能够知道可以使用哪些特性,比如是否可以输出中文等
需要注意的是,当程序是用shell以外的方式启动时,有些系统环境变量甚至是全部系统环境变量都还未设置。特别是那些守护进程,这些系统环境变量都还未设置——即使设置了,那些值也未必有意义。这类程序,尽量不要使用环境变量。另外,当环境变量有多个值的时候,需要使用冒号“:”作为分割,PATH变量就是最典型的例子。
其实环境变量有时候是很难区分什么是系统的,什么是用户的。如果一定要严格划分,那么任何用户都能访问到的就算是系统环境变量,但是值对于每个用户都可能不同,比如HOME。相反,如果只有某个具体的用户才能访问到的,就应该算是用户环境变量,毕竟那是因具体的某个用户而存在的。
尽管应用程序可以在系统定义的范围之外自由解释环境变量,但是这样的做法在Linux中是很少见的。而且环境变量也不适合把结构化信息作为值传递到程序中(虽然原则上可行)。所以,大多数情况都是直接使用现有的环境变量,标新立异的设计一个新的环境变量大多不是明智之举。应该优先考虑配置文件。
4.5.5 命令行选项
在Linux中,几乎所有程序都会提供几个命令行选项。这样做的一个好处是程序的配置信息可以由脚本指定,这对于作为管道或过滤器的程序尤其重要。
有三种约定可以区分命令行选项和普通的参数:原始的Unix风格、GNU风格和X tookit风格。
原始的Unix风格命令行选项,是以连字符“-”开头的单个字符。如果选项后面不带参数,则被称之为模式选项,模式选项是可以组合在一起使用的。例如,如果-a和-b是模式选项,那么-ab或-ba就都正确,而且会启用这两个选项。如果选项有参数,这些参数要紧接在选项后面(是否以空格分隔可选)。
GNU风格则使用两个连续的连字符“--”后接选项关键字(注意,不是单个字符)。这种风格是因为有好多程序过于复杂,导致单个字符不够用了而发展起来的一种治标不治本的方法。较原始的Unix风格更容易让人理解,但作为我们这种非英语为母语的同胞们也经常输入错误或记不住。GNU风格的选项不用空格分隔就不能组合使用。选项参数既可以用空格分隔也可以使用单个等号“=”来分隔。
最让人痛恨的恐怕应该是X toolkit风格了。它使用单连字符和选项关键字,并且由X toolkit进行解析。最要命的是,X toolkit先要过滤并处理某些特别的选项,比如-geometry和-display,然后再把过滤好的命令行传递给应用程序去解析。如果你不清楚它会过滤哪些选项,就会死活都找不出你的程序为什么接收不到某些选项。所以,这种东西最好别碰它。
在表4-2中我列举了最常用的Unix风格命令行选项的含义,从a到z都覆盖到了。如果你的程序需要提供某些方面的配置选项,那么可以直接使用。如果遇到冲突了,那么最好采用GNU风格。因为这样,可以使你的程序非常通用,也容易理解。当然,这对初学者也是有帮助的,因为Linux下大多数程序也是按照表中的约定去做的。
表4-2 常用的Unix风格命令行选项的含义
变量名用  途
-a所有选项(all),不带参数;或添加(append),这个时候与-d相对应
-b缓冲区(buffer)或数据块(block)大小,带参数;
批处理(batch),不带参数
-c命令(command),带参数;检查(check),不带参数
(续)
变量名用  途
-d调试(debug),带或不带参数;带参数指定调试信息级别,这个非常普遍;
偶尔具有删除(delete)或目录(directory)的含义
-D定义(define),带参数。比如C编译器的宏定义;
-e执行(execute),带参数;编辑(edit),不带参数;
偶尔具有排除(exclude)或扩展(extend)的含义
-f文件(file),带参数,表示文件输入;强制(force),多数不带参数
-gGDB调试信息,带或不带参数。主要用于GCC来生成GDB的特有调试信息
-h表头(header),通常不带参数。启用、禁用或修改程序生成报表的表头;
帮助(help),或许这是最普遍的理解
-i初始化(initiallize)或交互(interactive),通常不带参数
-I包含(include),带参数,比如C编译器的头文件搜索路径
-k保留(keep),不带参数,禁止某个文件、信息或资源的常规删除操作;
偶尔有杀死(kill)的含义
-l列表(list)、长模式(long)或登录(login),不带参数;
加载(load),带参数;偶尔会有代表长度(length)或锁定(lock)的含义
-m消息(message),带参数;
偶尔具有邮件(mail)、模式(mode)和修改(modify)的含义
-n数字(number),带参数;否(not),不带参数
-o输出(output),带参数
-p端口(port),带参数;协议(protocol),带参数
-q安静(quite),不带参数。禁止正常的结果输出或诊断输出
-r或-R递归(recurse)或反向(reverse),不带参数
-s缄默(silent),不带参数。与-q类似,如果两者都支持,-q表示“安静”,-s表示“绝对缄默”;主题(subject),带参数;偶尔具有大小(size)的含义
-t标记(tag),带参数
-u用户(user),带参数
-v冗长(verbose),带或不带参数;版本(version),不带参数
-V版本(version),不带参数,比-v常见
-w宽度(width),带参数;警告(warning),不带参数
-x启用调试,同-d类似,带或不带参数;提取(extract),带参数
-y是(yes),不带参数
-z启用压缩,不带参数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,654评论 18 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,161评论 2 33
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,260评论 9 467
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,094评论 1 19
  • 光的折射中,咱们主要关心两件事: 光从一种介质斜射入另外一种介质时,折射光方向会如何改变?此即模块8.1光的折射规...
    Byrd阅读 3,799评论 0 1