shell脚本分为三类:登录脚本、交互式脚本、非交互式脚本
shell脚本分为三类:登录脚本、交互式脚本、非交互式脚本
一、
登录脚本类似于windows下的计算机设置中的登录脚本和账户设置下的登录脚本的合集(我是这么理解的哈)。
其配置文件的关键词为prefile,它有以下几个关键配置文件:
/etc/prefile 这个是计算机脚本; [$home/.prefile ; $home/.bash_prefile ; $home/.bash_login]这三个是账户脚本,根据不同发行版名字不同(坑爹的linux) ;
说明:/etc/prefile之所以这么牛逼,应该与其内部含有export有关,export定义的环境变量,将被定义为全局变量。
读取顺序
登入账号前/etc/profile >> /etc/profile.d/* #/etc/profile 利用for循环调用 /etc/prefile.d/*
登入账号时$home/.profile >> $home/.bashrc(如果有内容的话)
这个顺序我也不是太确定,书中没有明确说,不过应该不会错。
二、
交互式脚本,主要用于登录账号后,新的shell进程创建时调用,它不会再调用/etc/prefile。根据其特性:利用alisa 创建别名的时候,就可以将其写入到$home/.bashrc,因为你每次启动终端模拟包或者shell的时候,总会去调用它。
其配置文件的关键词为bashrc,它有以下几个关键配置文件:
$home/.bashrc ;/etc/bashrc
$home/.bashrc 此脚本会调用/etc/bashrc,而/etc/bashrc又会调用/etc/profile.d/
说明:/etc/bashrc隶属于/etc,不用说,肯定是任何账户都必须要读取的
读取顺序$home/.bashrc >> /etc/bashrc >> /etc/profile.d/*
图示:
三、
非交互式脚本,主要用于系统执行shell脚本时调用。
linux有一个全局环境变量BASH_ENV,此环境变量的作用就是为了让非交互式脚本实现其价值,但默认此变量没有设置。
你可以用BASH_ENV=***来给它点活干干。当然要想长期使用,还得加到./bashrc。