Linux /etc/rc.local和~/.bashrc之间有什么区别?

Linux /etc/rc.local和~/.bashrc之间有什么区别?,linux,ubuntu,Linux,Ubuntu,这是一个与linux相关的问题。我到处找了找,但没有得到很好的解释 在我看来,这两个文件在我登录时都配置了设置,但有什么区别吗?我注意到,在决定什么应该进入两个不同的文件时,似乎有“一些规则”。例如,如果我需要将特定的搜索路径添加到$path,我应该在~/.bashrc中进行。但是如果我决定改变一些系统设置,比如 /sys/class/backlight 或 然后我必须在/etc/rc.local中执行此操作,否则它将无法工作 是不是因为这些配置在用户之间没有差异 谢谢。不同之处在于它们何时运

这是一个与linux相关的问题。我到处找了找,但没有得到很好的解释

在我看来,这两个文件在我登录时都配置了设置,但有什么区别吗?我注意到,在决定什么应该进入两个不同的文件时,似乎有“一些规则”。例如,如果我需要将特定的搜索路径添加到$path,我应该在~/.bashrc中进行。但是如果我决定改变一些系统设置,比如

/sys/class/backlight

然后我必须在/etc/rc.local中执行此操作,否则它将无法工作

是不是因为这些配置在用户之间没有差异


谢谢。

不同之处在于它们何时运行以及运行时以谁的身份运行,即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 file选项将强制bash读取和 从文件而不是~/.bashrc执行命令

在这个问题中有更多关于bashrc的信息


.bashrc
为每个启动的
bash
会话运行(即每次打开shell时)。听起来好像你在谈论
.bashrc
,就好像它是
.bash\u profile
,每次登录都会运行一次

根据您运行的设置类型,rc.local是一个遗留构造,但传统上它是在启动期间的最后一个运行级别上运行的。你可以在其他有关
rc.local
的帖子中看到这一点


如果您在运行
systemd
的系统上,这通常默认包含在
systemd
包中。

这个问题是我一个月前提出的,不过后来我意识到堆栈溢出不是解决这个Linux问题的最佳站点。感谢之前回答这个问题的人,但我想在这里补充一些解释

用户在Linux中更改系统环境基本上分(至少)三个阶段:

  • 当系统启动时;如果我们喜欢永久系统设置,则此阶段最合适,应通过
    /etc/…
    进行设置。例如,在我最初的问题中,背光以及一些CPU的在线/离线管理可以通过这种方式设置,而
    /etc/rc.local
    是我应该编辑的正确shell脚本。“永久”意味着此更新将影响使用系统的所有用户
  • 当用户登录时;如果用户只想更改其个人Linux环境,则此阶段最合适。因此,应该在
    ~/
    (或
    主页
    )下查找文件。例如,
    ~/.profile
    (历史上称为
    /bash\u profile
    ~/bash\u login
    )是在登录时运行的shell脚本
    ~/pam_environment
    不是一个shell脚本,但用于设置环境变量(有关更多信息,请参阅)
  • 当用户启动bash shell时;这个阶段的限制更大,因为它只在bash shell(及其子进程)中有效果,因此不会影响GUI环境。因此,如果用户的大部分工作都是通过shell完成的,那么这是一个合适的阶段。与此阶段相关的shell脚本是
    ~/.bashrc
    。例如,可以在此处更改环境变量
    PATH
  • 希望这个总结比技术性的更直观

    man bash