Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686236
  • 博文数量: 214
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 2285
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-18 17:02
文章分类

全部博文(214)

文章存档

2008年(43)

2007年(171)

我的朋友

分类:

2008-07-17 13:09:16

Bash下每个用户都可以配置两个初始文件:.bash_profile和.bashrc。man bash中的相关解释如下:

~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file

以前一直没细想两者的区别,今天整理了一下。

每次bash作为login shell启动时会执行.bash_profile。

主要有(我所知道的)有以下几种情形:

  • 每次登录到服务器时默认启动的shell
  • “su -l [USER]”时进入的shell
  • “bash —login”进入的shell

每次bash作为普通的交互shell(interactive shell)启动时会执行.bashrc

常见的有:

  • “su [USER]”进入的shell
  • 直接运行“bash”命令进入的shell。

注意

  • 在shell脚本中“#!/usr/bin/bash”启动的bash并不执行.bashrc。因为这里的 bash不是interactive shell。
  • bash作为login shell(login bash)启动时并不执行.bashrc。虽然该shell也是interactive shell,但它不是普通的shell。

一般.bash_profile里都会调用.bashrc

尽管login bash启动时不会自动执行.bashrc,惯例上会在.bash_profile中显式调用.bashrc。

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

试验脚本

用以下文件可以很方便的验证以上所述。

-bash-2.05b$ cat .bashrc
echo "in bashrc"
export TEST="rc"

-bash-2.05b$ cat .bash_profile
echo "in bash profile"

-bash-2.05b$ cat test.sh
#!/bin/bash
echo $TEST
bash-2.05b$
阅读(2267) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~