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
文件。