这是一个Linux相关的问题。 我已经四处搜寻,但没有得到一个很好的解释。
在我看来,这两个文件configuration设置,当我login,但有什么区别? 我注意到在决定应该把两个不同的文件分开的时候,似乎有一些“规则”。 例如,如果我需要添加特定的searchpath到$ PATH,我应该在〜/ .bashrc中执行。 但如果我决定改变一些系统设置,比如
/sys/class/backlight
要么
/sys/devices/cpu/cpu#/online
那么我必须在/etc/rc.local中执行此操作,否则将无法工作。
是否因为这些configuration在用户之间不能不同?
谢谢。
不同之处在于它们运行时的运行时间以及运行时的运行时间,即rc.local运行在运行级别的变化上并以root身份运行。 bashrc是特定于bash的,并且作为特定用户在非登录shell上运行。
你可以在这里找到rc.local
一个很好的解释
脚本/etc/rc.local供系统管理员使用。 在所有常规系统服务启动之后,在切换到多用户运行级别的过程结束时,传统上执行它。 您可以使用它来启动自定义服务,例如安装在/ usr / local中的服务器。 大多数安装不需要/etc/rc.local,它是为少数需要的情况提供的。
你可以找到你需要关于bashrc
man bash
当一个不是登录shell的交互式shell被启动时,如果该文件存在,bash将读取并执行〜/ .bashrc中的命令。 这可以通过使用–norc选项来禁止。 –rcfile文件选项将强制bash从文件读取并执行命令,而不是〜/ .bashrc。
在这个问题上有更多关于bashrc的信息…
https://superuser.com/questions/49289/what-is-the-bashrc-file
这个问题在一个月前被我问过,尽管后来我意识到堆栈溢出并不是这个Linux问题的最佳网站。 感谢早些时候回答这个问题的人,但是我想在这里添加更多的解释。
基本上(至少)有三个阶段,用户可以在Linux中更改系统环境:
/etc/...
。 例如,在我原来的问题中,可以通过这种方式设置背光以及一些CPU的联机/脱机管理 ,而/etc/rc.local
是我应该编辑的正确的shell脚本。 通过“永久”,这意味着此更新将影响所有使用该系统的用户。 ~/
(或HOME
)下的文件应该是正确的地方。 例如, ~/.profile
(历史上称为./bash_profile
或~/bash_login
)是一个在登录时运行的shell脚本。 ~/pam_environment
不是 shell脚本,但对于设置环境变量很有用(有关更多信息,请参阅Ubunte-official-wiki-environmental_variables )。 ~/.bashrc
。 例如,环境变量PATH
可以在这里改变。 希望这个总结比技术更直观。
.bashrc
为每个bash
会话启动(即每次打开一个shell)。 听起来好像你正在谈论的.bashrc
,就好像它是.bash_profile
,它是每个登录运行一次。
根据你运行的是什么样的设置, rc.local
是一个传统的构造,但是传统上它是在启动时运行在最后一个运行级别。 你可以看到这个链接的其他相关的职位谈论rc.local
。
如果你在运行systemd
的系统上,这通常默认包含在systemd
软件包systemd-backlight.service
。