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启动脚本就这么多故事呢。