~/.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 执行时打包。 我还认识到各种程序具有各种设置文件(例如 R 的 .Rprofile)。 但我会很感激一些信息:

  • *rc*profile 数据有本质区别吗?
  • 此类数据的范围是多少(例如 Linux 通常使用哪些文档)
  • 是否有优先顺序(例如 .bashrc 会覆盖 .settings 中设置的变量)
  • 这类数据有什么好的参考资料? 对于这些文件中的替代品?

相关问题

75
2022-06-07 14:38:25
资源 分享
答案: 2

安排文件的组织比您的询问似乎表明的要少得多。 没有“类”,没有“层次结构”,也没有全球范围内的“配置沙皇”,也没有决定典型语法的委员会或其他像您正在寻找的良好干净的概括。 只有 Rbashscreen 等各种不同的应用程序以及 GNOME 桌面设置,每个人都有自己的做事方式,因此您应该查看每个私有程序的文档以响应任何类型的细节有关特定数据的查询。 如果它出现广告 - 特设,那是因为它是:大多数 Unix / Linux 软件是由不同的人为不同的目标开发的,他们都开始以不同的方式进行安排。

要逐点回答您的各种其他问题:

  • *rc*profile 不太建议,所以这个问题实际上无法回答。 “rc”只是设置数据的常用首字母缩写词或后缀。 它的词源可以追溯到远古时代(计算机时代),也可能意味着运行命令(来自 运行通信)。 即使应用程序使用相同的词并不意味着它们同意约定。 “profile”是一个不太典型的后缀。

  • 指定“范围”。 许多应用程序不与其他不相关的应用程序共享排列数据。 一种可能的豁免是 /etc/profile.profile,它们可以被许多不同的 shell 使用(至少包括 shbash)。 有一个叫做 环境 的东西与每个正在运行的进程相关,它可能包含可能影响声明进程习惯的变量。 通常,环境变量由合适的 shell 设置文件设置,或者可能是您正在使用的任何可视桌面环境的设置文件。 “库”也有类似的安排申请,如 .inputrc 用于 readline 以及 .gtkrc* 用于 GTK,这肯定会影响使用该集合的每个应用程序。

  • 不,排列数据没有全局排序。 再次,请参阅相关详细程序的文件,例如,bashbash。 您通常可以依赖的一般约定是 $HOME 中的单个设置覆盖系统 - /etc 中的大型配置。 这通常是通过在系统一之后检查用户数据来实现的,以确保以后的设置覆盖以前的设置。 尽管如此,这并不是保证,而且对于确定的答案,您应该参考您正在使用的特定程序的文书工作。

  • 没有“类”,至少没有一个通用的足以涵盖您在问题中列出的所有文件,因此对此类“类”的引用的关注是没有实际意义的。 同样,请参阅您正在使用的特定程序的文书工作。

53
2022-06-07 15:06:03
资源

我相信这个调查在许多层面上也很广泛,例如你至少在问问题一个关注的各种程序。 我将看一下 /etc$HOME 中的排列文档之间的区别。

Unix 是一个多客户操作系统,这表明许多不同的人可以通过使用 sshtelnetXorg 来使用一个系统。 要为您的个人提供标准化设置,您可以在 /etc/ 中提供系统庞大的设置,您的发行版通常同样使用它来提供国际设置,例如 bashscreen

另一方面,一些用户希望自己个性化他们程序的设置,例如键绑定、阴影或外观。 这是通过 $HOME 中的配置文件完成的。 所以简单地把 /etc/ 放在系统范围内,而 $HOME 中的配置文件允许用户更改/覆盖系统范围内的设置。

6
2022-06-07 15:04:30
资源