这是一个与linux相关的问题。我已经四处寻找,但没有得到很好的解释。
在我看来,两个文件都在我登录时配置设置,但是有什么区别吗?我注意到在确定应该分成两个不同文件的内容时似乎存在“一些规则”。例如,如果我需要为$ PATH添加特定的搜索路径,我应该在〜/ .bashrc中进行。但是如果我决定改变一些系统设置,比如
/sys/class/backlight
或
/sys/devices/cpu/cpu#/online
然后我必须在/etc/rc.local中执行此操作,否则它将无效。
是否因为这些配置在用户之间无法区分?
感谢。
答案 0 :(得分:12)
这个问题是我一个月前问到的,虽然后来我意识到堆栈溢出并不是这个Linux问题的最佳站点。感谢之前回答过这个问题的人,但我想在这里补充更多解释。
基本上(至少)有三个阶段,用户可以在Linux中更改系统环境:
/etc/...
进行。例如,在我原来的问题中,可以通过这种方式设置背光以及某些CPU的在线/离线管理,{{1我应该编辑正确的shell脚本。通过" permanent",这意味着此更新将影响使用该系统的所有用户。/etc/rc.local
(或~/
)下的文件应该是正确的查找位置。例如,HOME
(历史上称为~/.profile
或./bash_profile
)是在登录时运行的shell脚本。 ~/bash_login
不是一个shell脚本,但对设置环境变量很有用(有关详细信息,请参阅Ubunte-official-wiki-environmental_variables)。~/pam_environment
。例如,可以在此处更改环境变量~/.bashrc
。希望这个摘要比技术更直观。
答案 1 :(得分:11)
不同之处在于它们何时运行以及它们在运行时运行的是谁,即rc.local在运行级别更改时运行并且以root身份运行。 bashrc是特定于bash的,并作为特定用户在非登录shell上运行。
你可以在这里找到rc.local
的好解释
脚本/etc/rc.local供系统管理员使用。它是 传统上在所有正常系统服务之后执行 在切换到多用户的过程结束时开始 运行级别。您可以使用它来启动自定义服务,例如a 安装在/ 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
答案 2 :(得分:2)
.bashrc
会话开始运行 bash
(即每次打开shell时)。听起来好像你正在谈论.bashrc
,好像它是.bash_profile
,每次登录都会运行一次。
根据您运行的设置类型rc.local
是遗留构造,但传统上它是在启动期间在最后一个运行级别运行的。对于其他相关帖子,您可以看到此link,其中涉及rc.local
。
如果你正在运行systemd
的系统,则默认情况下会在systemd
包systemd-backlight.service
中包含此内容。