什么是 profile 文件?
profile 文件是 Linux、MacOS 等(unix、类 unix 系统)系统中的一种配置文件,主要用于设置系统和用户的环境变量。
在 shell 中,可以通过执行 profile 文件来设置用户的环境变量。shell 有两种运行模式:login shell 和 non-login shell。
login shell 是指用户登录系统时启动的 shell,login shell 会读取系统配置文件(如 /etc/profile )来设置系统的整体环境,同时也会读取用户个人的配置文件(如 ~/.bash_profile 或 ~/.bash_login),来设置用户个人的环境。
与 login shell 相对的是 non-login shell,是在登录后启动的第二个shell。non-login shell 可以直接从 login shell 继承环境和配置。no-login shell 主要用来执行用户在桌面环境下的交互式任务,如打开终端、编辑文件等。
bash Shell
/etc/profile 用来配置系统的所有登录用户的环境信息,当用户第一次登录时,该文件会被执行,并从 /etc/profile.d 目录中加载 shell 的设置。
用户可以通过 ~/.bash_profile 文件配置自己的环境信息,当用户登录时,bash shell会读取并执行 ~/.bash_profile 文件中的命令。
若 bash 是以 login 方式执行时,先读取~/.bash_profile,若不存在,则读取 ~/.bash_login,若两者都不存在,则读取 ~/.profile。另外,图形模式登录时,此文件将会被读取,即使存在~/.bash_profile和~/.bash_login。
当 bash shell 被打开时或在用户主目录下找不到 .bashrc时,就会读取 /etc/bashrc 文件。
~/.bashrc 文件类似于 /etc/bashrc,不需要重启系统生效,重新打开一个 bash 即可生效。/etc/bashrc 对所有用户新打开的bash都生效,但~/.bashrc只对当前用户新打开的bash生效。