~/.profile、~/.bashrc、~/.bash_profile、~/.gnomerc、/etc/bash_bashrc、/etc/screenrc ... 之间有什么区别?

~/.profile、~/.bashrc、~/.bash_profile、~/.gnomerc、/etc/bash_bashrc、/etc/screenrc ... 之间有什么区别?

问题的答案所以阿库本图,以及浏览(并读取其标题)$HOME/etc/,指示许多可用于设置环境变量的文件,包括:

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

我收集了/etc/适用于所有用户的文件,而其中的文件$HOME是特定于用户的。我还收集到.profile在登录时加载而在执行.bashrc时加载。/bin/bash我还了解到不同的程序有不同的设置文件(例如.RprofileR)。但我希望得到一些澄清:

  • *rc和文件有本质上的不同吗*profile
  • 此类文件的范围是什么(例如哪些文件通常用于 Linux)
  • 是否存在层次结构(例如.bashrc覆盖中设置的变量.settings
  • 此类文件有哪些好的参考资料?对于这些文件中的选项?

链接问题

答案1

配置文件的组织远不如您的问题所暗示的那么统一。没有“类”,没有“层次结构”,也没有全局“配置沙皇”,也没有委员会来规定通用语法或其他像您正在寻找的那样的干净的概括。只有大量独立的应用程序,例如RbashscreenGNOME 桌面环境,它们都有自己的工作方式,因此您应该查看每个单独程序的文档来回答任何问题具体的有关特定文件的问题。如果它看起来是临时的,那是因为:大多数 Unix / Linux 软件是由不同的人出于不同的目的而开发的,他们的配置都略有不同。

逐点回答您的其他问题:

  • *rc而且*profile意义不大,所以这个问题无法真正回答。 “rc”只是配置文件的常用缩写或后缀。它的词源可以追溯到远古时代(计算机时代),可能意味着运行命令(来自润康)。仅仅因为应用程序使用相同的单词并不意味着它们同意约定。 “profile”是一个不太常见的后缀。

  • 定义“范围”。大多数应用程序不与其他不相关的应用程序共享配置文件。一个可能的例外是/etc/profile.profile,它可以由多个不同的 shell 使用(至少包括shbash)。有一种东西叫做环境与每个正在运行的进程相关联,其中可能包含可能影响该进程行为的变量。一般来说,环境变量是由适当的 shell 配置文件设置的,或者可能是您正在使用的任何图形桌面环境的配置文件。还有“库”的配置文件,例如.inputrcreadline 和.gtkrc*GTK,这将影响使用该库的每个应用程序。

  • 不,配置文件没有全局层次结构。再次,请参阅相关特定程序的文档,例如bash手动的为了bash。您通常可以依赖的一般约定是,$HOME中的用户设置会覆盖/etc.这通常是通过在系统文件之后读取用户文件来完成的,以便后面的设置覆盖前面的设置。但是,这并不能保证,要获得明确的答案,您应该参阅您正在使用的特定程序的文档。

  • 没有“类”,至少没有足够通用的内容来包含您在问题中列出的所有文件,因此此类“类”的参考问题是没有意义的。再次,请参阅您正在使用的特定程序的文档。

答案2

我认为这个问题在很多层面上都太宽泛了,例如你问的问题至少是关于一个问题有不同的程序。我只会看看/etc和中的配置文件之间的区别$HOME

Unix 是一个多用户操作系统,这意味着许多不同的人可以通过使用sshtelnet或 来使用一个系统Xorg。要为您的用户提供标准化配置,您可以提供系统范围的配置/etc/,您的发行版通常也使用它来提供全局配置,例如bashscreen

另一方面,一些用户希望自己自定义程序的设置,例如键绑定、颜色或外观。这是通过其$HOME.简而言之,/etc/提供系统范围的配置,而 $HOME 中的配置文件允许用户更改/覆盖系统范围的配置。

答案3

部分答案来自这个帖子:

.bashrc是 Bash 每当以交互方式启动时都会运行的 shell 脚本。

对比.bash_profile.profile仅在新的登录 shell 启动时运行。(bash -l)

您可以根据您希望命令运行一次还是每次交互式 shell 启动时运行来选择命令是否进入.bashrcvs。.bash_profile

相关内容