Ubuntu中默认没有在~/下存在.bash_profile文件,只有执行顺序最次的.profile文件。
按说,~/.bashrc是是交互式 non-login 方式进入 bash 运行的,~/.bash_profile , ~/.bash_login , ~/.profile 是交互式、login 方式进入 bash 运行的。
(交互式login和交互式non-login有何不同?是不是就是图形界面登录gnome桌面是交互式login方式的?好像是这样的。新手,基本概念都不太清楚,谅解)
可是,我在~/.bashrc中添加的环境变量好像在图形界面下没有作用。在~/.profile中添加才有用,而且.profile中的变量在终端中可用,这当然是应该的。
~/.profile中的一段
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
登入gnome桌面后,并没有去source ~/.bashrc,所以在~/.bashrc中设置的变量没有起作用,只有终端中才会source ~/.bashrc,所以我想这段程序就成了废话。
这不象FC6中的~/.bash_profile,就是
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
只要~/.bashrc存在就source它。
这是Ubuntu7.04和Fedora Core 6的小小区别。所以Ubuntu中添加变量时不是随便添加进.bashrc或.profile都可以的。FC6中都可以,只不过如果加在了.bashrc文件中,在终端环境中该变量被设置了两遍。
参考:
在登录后的bash并不执行~/.bashrc ,为什么? (Gentoo)
Bash的环境设定
.bash_profile和.bashrc的什么区别
Debian系统配置文件说明