Linux bash启动脚本


最近在学习Linux一站式学习,在这里记录笔记了

bash的启动脚本:
1、作为交互登录shell启动,或者使用--login参数启动
   比如从字符终端登录或者telnet、ssh远程登录就是交互登录
   交互登录shell会执行以下脚本:
   /etc/profile
   当前用户目录的~/.bash_profile、~/.bash_login和~/.profile三个文件中的第一个存在并且可读的文件来执行
   另外在退出时会执行~/.bash_logout

2、以交互非登录Shell启动
   比如在图形界面下开一个终端窗口,或者在登录Shell提示符下再输入bash
   交互非登录Shell启动时执行~/.bashrc脚本
   另外为了使登录Shell也能自动执行~./bashrc通常在~/.bash_profile中调用~/.bashrc:
   if [ -f ~/.bashrc ]; then
      . ~/.bashrc
   fi

3、非交互启动
   为执行脚本儿fork出来的子Shell是非交互Shell,启动时执行的脚本由环境变量BASH_ENV定义,相当于执行以下命令:
   if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

4、以sh命令启动
   如果以sh命令启动bash,bash将模拟sh的行为,以~/.bash_开头的那些启动脚本就不认了,所以如果作为交互登录或使用--login参数启动,则依次执行:
   /etc/profile
   ~/.profile
   如果作为交互shell启动,则相当于自动执行以下命令:
   if [ -n "$ENV" ]; then . "$ENV"; fi
   如果作为非交互Shell启动,则不执行任何启动脚本,通常Shell脚本都以#! /bin/sh开头,都属于这种方式

看来Linux学通了还是不容易啊,光bash启动脚本就这么多故事呢。

相关内容