在点文件中,"rc"是什么意思?

430

在Linux中的我的主文件夹中,有几个文件名扩展名为"rc"的配置文件:

$ ls -a ~/|pcregrep 'rc$'
.bashrc
.octaverc
.perltidyrc
.screenrc
.vimrc

这些名称中的 "rc" 是什么意思?


35
请参阅http://en.wikipedia.org/wiki/Run_Commands。 - Some programmer dude
4
同样的问题在这里提出:https://bbs.archlinux.org/viewtopic.php?id=13052 - Prometheus
2
我更好奇的是程序如何“知道”要从哪些rc文件中读取?例如,.vimrc在Vim启动之前加载。.pylintrc在pylint启动之前加载。我认为.bashrc是针对终端的,但是.bash_profile也是这样。所以这些文件名是为每个程序预定义的,并且一些程序(比如终端)甚至识别多个配置文件吗? - Sean
1
@Sean:“这些文件名是为每个程序预定义的,有些程序(如终端)甚至可以识别多个配置文件吗?” 是的。 - Code-Apprentice
6个回答

422

看起来它可能是以下之一:

  • 运行命令
  • 资源控制
  • 运行控制
  • 运行时配置

此外,我找到了一个引文

‘rc’后缀可以追溯到Unix的祖先CTSS。它有一个称为“runcom”的命令脚本功能。早期的Unix使用‘rc’作为操作系统启动脚本的名称,以对CTSS runcom表示敬意。


4
有很多不同的答案。只需将它们视为资源文件,我们就没问题了 :) 我喜欢运行时配置或资源控制。 - Prometheus
74
"rc 文件"中的 "rc" 命名惯例,受上述提到的 "runcom" 设施启发而来,并不代表 "resource configuration" 或者 "runtime configuration",这经常被错误地猜测。http://en.wikipedia.org/wiki/Rc_file - Dan K.K.
4
为什么不进行重新配置呢?这将非常准确,可以定制默认配置。 - user4104817
1
这里有另一种引用,证实了“RUNCOM”一词的词源学。 - John E

52

运行时配置通常在config目录中。我把它们看作资源文件。如果文件名中出现rc,这可能是版本,即发布候选版。

编辑:不,正式地撤回...“run commands”

[Unix:来自1962-63年CTSS系统上的runcom文件,通过启动脚本/etc/rc]

脚本文件包含应用程序(或整个操作系统)的启动指令,通常是一个文本文件,包含那些在系统运行后可能手动调用的命令,但每次系统启动时都将自动执行。

因此,似乎“rc”部分代表“runcom”,我认为可以扩展为“run commands”。实际上,这正是文件包含的内容,是Bash应该运行的命令。

摘自.bashrc中的“rc”代表什么?

我学到了新东西! :)


3
即使它不是“bashrc中的rc”,也请为“Release Candidate”打+1。 - n611x007
“rc文件”可以在黑客术语词典中找到:https://webyes.com.br/wp-content/uploads/ebooks/book_the_hacker_dictionary.pdf 这里是索引:http://www.catb.org/jargon/html/go01.html - smwikipedia

19

在类Unix系统中,rc代表“运行命令”这一短语。它用于包含命令启动信息的任何文件。人们认为其起源于1965年麻省理工学院兼容时间共享系统(CTSS)的Runcom设施。

参考资料:https://en.wikipedia.org/wiki/Run_commands


4

1
是的,RC就是它的意思。Run Control,尽管我们在许多不同的配置文件末尾看到它们被附加,但令人惊讶的是,在我所阅读的手册/文档中,RC中的C并不意味着Configuration。 - JΛYDΞV

1

我想在之前对这个主题的探索中添加我的发现。

简而言之,我认为:bashrc和init rc中的rc都代表runcom,即运行命令的缩写。

init的起源是向CTSS的runcom致敬,而在shell的情况下,“shell”和底层的宏处理器都是CTSS概念的直接后代,该概念最初由Louis Pouzin于1965年首次描述。请参见以下片段:

主题:SHELL:调用和链接系统中过程的全局工具 来自:Louis Pouzin。 日期:1965年4月2日

https://people.csail.mit.edu/saltzer/Multics/Multics-Documents/MDN/MDN-4.pdf

主题:RUNCOM • 636系统的宏过程处理器 发件人:Louis Pouzin。 日期:1965年4月7日

https://people.csail.mit.edu/saltzer/Multics/Multics-Documents/MDN/MDN-5.pdf

SHELL 4.1 我们可以设想一个通用的过程,每当用户在控制台键入某些消息时,由监督程序自动调用,在他没有其他进程在控制台控制下活动执行(目前称为命令级别)的时间。这个过程充当控制台消息和子例程之间的接口。这样一个过程的目的是创建一个交换媒介,可以激活任何过程,如果在另一个程序内部调用。为了简化起见,我们将把那个过程称为“SHELL”。

请求堆叠 7.1 类似于在控制台键入的请求链接很简单。从任何过程中连续调用SHELL,以及在递归的任何级别上,都允许无限链接请求。 7.2 另一个常用于当前系统的功能是执行存储在BCD文件中的一堆请求。这种模式是一种简单的变化,因为它包括读取几个BCD请求字符串的块,并将返回推迟到调用程序直到该块已耗尽。由于当前系统约定,当请求名称为RUNCCflM时,SHELL会选择此执行模式,而第一个参数是文件的BCD名称。但是,任何其他约定也可能有效。

除此之外,我提供了Unix用户手册Release 3,1980年6月的“mk - 如何重新制作系统和命令”

“lib目录包含加载用户程序时使用的库。其中最大且最重要的是C库。所有库都在子目录中,并由makefile或runcom创建。runcom是一种Shell命令过程,专门用于重新制作系统的一部分。:lib将重建给定为参数的库。”

http://bitsavers.trailing-edge.com/pdf/att/unix/System_III/UNIX_Users_Manual_Release_3_Jun80.pdf

此外,有趣的是,最初的 Bourne shell(bsh)在启动时没有像后来的 csh 和 ksh 一样进行文件读取。

https://www.ibm.com/support/pages/overview-shell-startup-files

考虑到ksh和csh都出现的时间以及它们都使用堆叠命令的启动外壳初始化程序,这使得它成为外壳启动runcom非常合理。

-IdS


-10
为了理解rc文件,有助于了解Ubuntu引导到几个不同的运行级别。它们是0-6,0表示“停止”,1表示“单用户”,2表示“多用户”(默认运行级别),等等。这个系统现在已经被大多数Linux发行版中的Upstart和initd程序所取代。它仍然保持向后兼容性。
在/etc目录中有几个标记为“rc0.d、rc1.d”等的文件夹,通过rc6.d。这些是内核用来知道应该为该运行级别运行哪些init脚本的目录。它们是指向位于/etc/init.d目录中的系统服务脚本的符号链接。
在您使用它的上下文中,似乎您正在列出任何名称中带有rc的文件。这些文件中的代码将设置服务/任务启动和初始化时运行的方式。

3
运行级别在启动时用于创建服务,但这与rc文件不同。 - AnthonyB
rc6.d 包含 运行命令 文件(shell 脚本),当切换到运行级别 6 时,init 应该执行这些文件。我认为在这种情况下,“RC”的英文含义与 /etc/bash.bashrc~/.vimrc 等上下文中的含义相同,但它们作为系统部分的功能却非常不同。如果这种用法(在进入运行级别时运行命令)是最古老的,那将是有趣的,并且可以解释名称的选择(其他答案确实提到了早期 Unix 引导文件具有 rc 名称),但您并未声明并似乎忽略了“rc”文件的其他用途。 - Peter Cordes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接