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)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$ '
#PS1='${debian_chroot:+($debian_chroot)}u@h:w$ '
PS1="[e]0;${debian_chroot:+($debian_chroot)}u@h: wa]$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/oauthalias 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_logout文件这个文件我更改的最少,因为几乎用不到。 .bash_logout文件是在每次登录shell退出时被读取并执行。 该文件提供了定制用户环境的功能。即如果执行诸如删除账号内临时文件或记录登录系统所花时间等命令,则可将这些命令放在.bash_logtou内。 如果该文件不存在则退出时不再执行其他命令。
总结说白了,这三个文件可以简单归结如下: .bash_profile 类似于编程中的构造函数,当登录shell时,shell会寻找该文件做环境初始化。 .bashrc 是.bash_profile的替补。 .bash_logout 类似于编程中的析构函数,当登录shell退出时,shell会寻找该文件,并按其指示办事。
|