~/.bashrc
和 /etc/profile
都是用于配置用户环境的文件,但它们在用途、执行时机和适用范围上有所不同。以下是详细的区别:
~/.bashrc
-
作用:
~/.bashrc
是一个用户级别的配置文件,用于设置用户的 shell 环境。它通常用于配置用户的个性化环境,如别名、函数和环境变量等。 -
执行时机:
~/.bashrc
在每次启动一个新的交互式非登录 Bash shell 时被执行。也就是说,每次你打开一个新的终端窗口或启动一个新的终端会话时,~/.bashrc
会被读取和执行。 -
适用范围: 只对当前用户有效。每个用户都有自己的
~/.bashrc
文件,这些文件是独立的。 -
配置示例:
# ~/.bashrc alias ll='ls -la' export PATH=$PATH:$HOME/bin
/etc/profile
-
作用:
/etc/profile
是一个系统范围的配置文件,用于设置系统级别的环境变量和启动脚本。它适用于所有用户,并用于设置系统范围的环境。 -
执行时机:
/etc/profile
在用户登录到系统时(通过控制台、SSH、或其他登录方式)被执行。这包括登录 shell 会话。 -
适用范围: 对所有用户有效。无论是哪个用户登录系统,
/etc/profile
都会被读取和执行。 -
配置示例:
# /etc/profile export PATH=$PATH:/usr/local/bin export EDITOR=vim
总结
-
~/.bashrc
:- 用途: 用户级别的个性化配置
- 执行时机: 每次启动新的交互式非登录 shell
- 适用范围: 当前用户
-
/etc/profile
:- 用途: 系统级别的全局配置
- 执行时机: 用户登录时
- 适用范围: 所有用户
补充信息
登录 Shell 和非登录 Shell 的关系
非登录 Shell 是在已经登录的 Shell 会话中启动的,通常不需要重新验证身份。它是在一个已经认证的环境下进行的操作。例如,当你在登录到系统后打开一个新的终端窗口或标签页时,你启动的是一个非登录 Shell。
-
登录 Shell:
- 需要进行身份验证。
- 是用户首次登录时启动的 Shell。
- 读取
/etc/profile
、~/.bash_profile
、~/.bash_login
或~/.profile
等文件。
-
非登录 Shell:
- 不需要重新身份验证。
- 在已登录的 Shell 会话中启动,通常由用户打开一个新的终端窗口或标签页,或者从现有的终端中启动新的 Shell。
- 读取
~/.bashrc
文件。
在这种设置下,登录 Shell 环境被创建并认证后,你可以在该环境下启动多个非登录 Shell,而不需要再次进行身份验证。
Linux中全局变量配置,/etc/profile.d还是/etc/profile
- 典型配置:
/etc/profile
: 用于设置所有用户的全局环境变量和系统级别的配置。~/.bashrc
: 用于设置用户个人的环境变量、别名、函数等。