Linux 几个用户配置文件的区别
参考出处:https://itbilu.com/linux/management/NyI9cjipl.html
在 Linux 或类 Unix 系统(含 macOS)里,profile、bash_profile、bashrc 经常出现。下面说明各自大致做什么、谁在什么时候读它们。
1. profile(常见于 /etc/profile)
/etc/profile 用来配置系统级的环境变量和启动时要跑的脚本;这里的设置会对所有用户生效。用户以 login(登录式) 会话进入系统时,该文件会被执行,并通常会再去加载 /etc/profile.d/ 下的脚本。
一般不鼓励随意改 /etc/profile:改动会影响全体用户。若确实需要系统级变量,可以:
- 在
/etc/profile末尾追加export,或 - 更稳妥的做法是在
/etc/profile.d/里单独放一个脚本(便于维护和卸载)。
示例(定义环境变量 HOST):
export HOST=itbilu.com
修改后通常需要重新登录才会在新会话里生效;当前终端可以用:
source /etc/profile
让配置立刻生效。
2. bashrc(/etc/bashrc 与 ~/.bashrc)
bashrc 多用于配置 alias(别名)、函数、以及交互式 shell 的个性化选项。
- 系统级:
/etc/bashrc(有的发行版叫/etc/bash.bashrc),影响范围依发行版而定。 - 用户级:
~/.bashrc,只对当前用户生效。
重要:只有 Bash 会按约定去读这些文件;并且典型用法是:交互式非登录 shell 会读 ~/.bashrc(具体顺序因「是否 login、是否交互」以及发行版默认模板而异)。
3. bash_profile(~/.bash_profile)
~/.bash_profile 位于用户主目录,是用户级配置,只在 login shell 且使用 Bash 时生效,常用来放该用户的 PATH、环境变量或登录时要执行的命令。
与 /etc/profile 的相似点:都与「登录会话」相关。不同点:bash_profile 只影响当前用户,不会替代 /etc/profile 的全局逻辑——二者可能在一次登录过程中先后被读到(取决于系统如何把 Bash 配成登录 shell)。
小结(便于对照)
| 文件(典型路径) | 作用范围 | 常见用途 |
|---|---|---|
/etc/profile |
全体用户(login) | 系统级环境变量、全局登录脚本 |
~/.bash_profile |
当前用户(Bash login) | 用户环境变量、登录时初始化 |
~/.bashrc |
当前用户(Bash 交互) | 别名、函数、交互提示符等 |
实际加载顺序与是否 SSH 登录、终端模拟器是否启动 login shell 等有关;若改完「不生效」,优先确认当前 shell 是不是你以为的那种(login / 非 login、交互 / 非交互),再决定改 profile 还是 bashrc。