IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

.bash_pfofile、.bash_logout和.bashrc

小小子 2011-05-25 13:38:40 累计浏览 4,329 次
本机暂存

Linux环境下,.bash_profile、.bash_logout和.bashrc这些文件对bash有特殊含义。它们在用户登录或调用另一bash shell时给出了一种自动建立其登录账号环境的方式,并且允许退出时执行各种命令。

之前一直搞不懂 .bash_profile和.bashrc之间的关系是啥样子的。今天抽空看了一下书,记录一下。

首先,有的兄弟可能会奇怪的说,自己的主目录下面并没有这几个文件。那初始环境用的是啥子呢?如果这些文件不存在,用户登录使用默认系统文件 /etc/profile ,请看一下这个文件是否存在吧。

.bash_profile文件

.bash_profile是最重要的文件,该文件在用户每次登录到系统时被读取,其中包含的命令被bash执行。

该文件定义了用户登录账号的基本环境:包括PATH的路径及一些alias别名设置等。

如果更改了自己.bash_profile文件的内容,那么直到退出并再次登录,该文件被重新读取后,更改才会生效。如果您性子较急的话,请使用 source .bash_profile 让其更改立即生效。

我个人的.bash_profile文件配置如下:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
export PS1
export PAGER=less
export BLOCKSIZE=K
export HISTFILE=~/.bash_history
export RSYNC_RSH=ssh
export PHPADMIN_HOME=$HOME/htdocs/phpMyAdmin
export OAUTH_HOME=$HOME/htdocs/oauth

alias ls='ls --color=auto'
alias ll='ls -lGA'
alias vdiff='vim +"DirDiff"'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias rm='rm -i'
alias mv='mv -i'
alias cp='cp -i'
alias sco='svn co'
alias sci='svn ci -m ""'
alias sup='svn up'
alias st="svn st"
alias kg='qpkg info'
alias aconf='pushd .; cd /usr/local/apache2/conf/include'
alias alog='pushd .; cd /usr/local/apache2/logs'
alias abin='pushd .; cd /usr/local/apache2/bin'
alias bk='popd'
alias his='history'
alias hisgrep='history | grep'

.bashrc文件

上面介绍了.bash_profile,那么.bashrc又是干啥的?

.bash_profile文件只被登录shell读取并执行,也就是说,如果您的初始shell为cshell。那么当您执行bash切换到bash环境时,并不会读取.bash_profile。此时读取的是.bashrc文件。

bash

.bash_logout文件

这个文件我更改的最少,因为几乎用不到。

.bash_logout文件是在每次登录shell退出时被读取并执行。

该文件提供了定制用户环境的功能。即如果执行诸如删除账号内临时文件或记录登录系统所花时间等命令,则可将这些命令放在.bash_logtou内。

如果该文件不存在则退出时不再执行其他命令。

总结

说白了,这三个文件可以简单归结如下:

  1. .bash_profile 类似于编程中的构造函数,当登录shell时,shell会寻找该文件做环境初始化。
  2. .bashrc 是.bash_profile的替补。
  3. .bash_logout 类似于编程中的析构函数,当登录shell退出时,shell会寻找该文件,并按其指示办事。

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Bash的模式和配置文件加载 (累计阅读 24,409)
  2. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  3. 我的 RHCA 之路 (累计阅读 14,012)
  4. Linux内存点滴 用户进程内存空间 (累计阅读 13,229)
  5. 给程序员新手的一些建议 (累计阅读 13,089)
  6. Linux 性能监控、测试、优化工具 (累计阅读 13,011)
  7. 关于linux内存free的一些事情 (累计阅读 12,867)
  8. 高效Linux用户需要了解的命令行技能 (累计阅读 12,825)
  9. ps - 按进程消耗内存多少排序 (累计阅读 12,687)
  10. Google怎么用linux (累计阅读 12,581)