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

Abe*_*Abe 72 bash settings environment-variables profile bashrc

关于SOaskubuntu的问题的答案,以及翻阅(和阅读的标题)$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
  • 此类文件有什么好的参考?对于这些文件中的选项?

相关问题

jw0*_*013 53

配置文件的组织不像您的问题所暗示的那么统一。没有“类”,没有“层次结构”,也没有全局的“配置沙皇”或委员会来制定通用语法或其他像您正在寻求的简洁的概括。只有像独立的应用程序众多Rbashscreen和GNOME桌面环境,所有的人都有自己做事的方法,所以你应该看看文档,为每个程序回答任何具体的有关特定文件的问题。如果它看起来是临时的,那是因为:大多数 Unix/Linux 软件是由不同的人为不同的目的开发的,他们的配置略有不同。

有针对性地回答您的其他问题:

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

  • 定义“范围”。大多数应用程序不与其他不相关的应用程序共享配置文件。一个可能的例外是/etc/profileand .profile,它可以被多个不同的 shell(至少包括shand bash)使用。每个正在运行的进程都有一个称为环境的东西,它可以包含可能影响所述进程行为的变量。通常,环境变量由适当的 shell 配置文件或您正在使用的任何图形桌面环境的配置文件设置。还有一些“库”的配置文件,比如.inputrcreadline 和.gtkrc*GTK,它们会影响使用库的每个应用程序。

  • 不,配置文件没有全局层次结构。再次,参考文档为特定程序中的问题,例如,在bash手动bash。您通常可以依赖的一般约定是$HOME覆盖/etc. 这通常是通过在系统后读取用户文件来完成的,以便以后的设置覆盖以前的设置。但是,这不是保证,对于确定的答案,您应该参考您正在使用的特定程序的文档。

  • 没有“类”,至少没有一个一般性足以包含您在问题中列出的所有文件,因此此类“类”的参考问题没有实际意义。同样,请参阅您正在使用的特定程序的文档。


Ulr*_*gel 6

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

UNIX是一个多用户操作系统,这意味着许多不同的人可以使用的系统中,或者通过使用sshtelnetXorg。要为您的用户提供标准化配置,您可以在 中提供系统范围的配置/etc/,这通常也被您的发行版用于为 egbash或提供全局配置screen

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