Bash Profile 和 Bashrc 的区别
本教程解释了 Bash 中 ~./bash_profile 和 ~/.bashrc 文件之间的区别。
什么是 Bash 中的启动文件
启动文件是在 shell 启动后执行的文件。启动文件取决于启动的 shell 类型。shell 可以作为交互式 shell 或非交互式 shell 执行。
交互式 shell 是从终端上的用户输入读取命令并将输出显示到终端的 shell。相反,非交互式 shell 不与终端关联,例如运行脚本。
交互式 shell 可以进一步分为两个。它可以是交互式登录 shell 或交互式非登录 shell。
登录 shell 是使用 /bin/login 通过读取 /etc/passwd 文件成功登录后启动的第一个进程。登录 shell 在你的用户 ID 下执行。当你使用终端登录、切换到另一个用户或使用 SSH 时,会执行登录 shell。
登录 shell 启动一个非登录 shell。它可以是一个以没有登录的进程启动的 shell,也可以是从另一个 shell 启动的 shell。进程使用 shell 可执行文件的名称来启动非登录 shell。
Bash 中 ~/.bash_profile 和 ~/.bashrc 的区别
一旦 shell 作为交互式登录 shell 启动,它会从 ~/.profile 读取命令,但 Bash 会从 ~/.bash_profile 读取命令。Bash 只能读取~/.bash_profile,如果文件不存在,Bash 会读取~/.profile。
~/.profile 在 Linux 发行版中比 ~/.bash_profile 更常用,因为它被所有 shell 读取和执行。相反,~/.bash_profile 只能由 Bash 读取和执行。
当 shell 作为交互式非登录 shell 启动时,它会从 ~/.bashrc 文件中读取并执行命令。
~/.bash_profile 和 ~/.bashrc 作为点文件位于用户的主目录中。用户主目录中的文件用于进行仅适用于该特定用户的配置。
这些配置通常会覆盖系统配置。 ~/.bash_profile 包含启动程序配置和用户特定的环境配置,而 ~/.bashrc 文件存储特定用户的函数和别名。
位于 /etc/ 目录中的文件用于进行适用于系统上所有用户的系统范围配置。这些文件包括 /etc/profiles 和 /etc/bashrc。
使用 ls 命令查看 Bash 中的启动文件
要查看 ~/.bash_profile 或 ~/profile 和 ~/.bashrc,请导航你的主目录并键入命令 ls -al。
-a 选项通知 ls 命令列出所有文件,包括以点开头的文件。 -l 选项通知 ls 命令使用长列表格式列出文件。
下图显示了 ~/.bashrc 和 ~/.profile 文件。

