我是 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
在环境中查找变量,如果出现则扩展其值,并使用扩展的值作为要读取和执行的文件的名称。