Skip to content

Linux 几个用户配置文件的区别

复制本地路径 | 在线编辑

参考出处:https://itbilu.com/linux/management/NyI9cjipl.html

在 Linux 或类 Unix 系统(含 macOS)里,profilebash_profilebashrc 经常出现。下面说明各自大致做什么、谁在什么时候读它们。


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

Comments

本文阅读 Loading 本站访问 Loading 访客 Loading