了解 .bashrc 和 .bash_profile

了解 .bashrc 和 .bash_profile

可能重复:
我应该何时将配置放入 .bashrc 中,还是放入 .bash_profile 中?

我是 Linux 环境方面的新手,想知道.bashrc和的用途.bash_profile。我只知道它们特定于每个用户帐户。通过在这些文件中实现某些功能可以添加/修改哪些功能/行为

答案1

首先,.bash_profile仅用于登录 bash shell。 .bashrc用于每个其他 bash shell。因此,如果存在.bash_profile,通常会执行 source 命令.bashrc,这样您就不必为每个 shell 重复要运行的任何命令,无论它是否是登录 shell。

一般来说,使用这些脚本可以做两件事:运行程序和设置环境变量。登录时要运行的任何程序都输入 ,要.bash_profile在每个 shell 上设置的任何程序(例如,如果您使用screen或打开终端)都输入.bashrc

我自己的一些事.bashrc(作为例子):

  • $PS1
  • 启用特殊制表符完成规则
  • 通过运行设置 shell 选项shopt
  • 设置命令别名

从我的.bash_profile

  • 来源.bashrc
  • 添加目录到$PATH
  • 跑步ssh-agent

需要注意的是,.bash_profile 仅在您直接登录 bash shell 时执行。如果您正在启动 X 会话,则您将登录到 X 服务器,该服务器将有自己的登录脚本(通常类似于.xsession

答案2

Bash 手册中的“Bash 启动文件”部分对此进行了解释:http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files

更新:以下是简短版本:

当 Bash 作为交互式登录 shell 或使用 选项作为非交互式 shell 调用时--login,它首先从文件 读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile~/.bash_login~/.profile,然后从第一个存在且可读的文件中读取并执行命令。

当启动非登录 shell 的交互式 shell 时,~/.bashrc如果该文件存在,Bash 将从中读取并执行命令。

当 Bash 以非交互方式启动时,例如,要运行 shell 脚本,它会BASH_ENV在环境中查找变量,如果出现则扩展其值,并使用扩展的值作为要读取和执行的文件的名称。

相关内容