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。

时间: 2024-08-08 13:29:04

shell脚本分为三类:登录脚本、交互式脚本、非交互式脚本的相关文章

登录式与非登录式&交互式与非交互式shell及其环境初始化过程

交互式shell和非交互式shell(interactive shell and non-interactive shell) 交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令.这种模式被称作交互式是因为shell与用户进行交互.这种模式也是大多数用户非常熟悉的:登录.执行一些命令.退出.当你退出后,shell也终止了. shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行.在这种模式 下,shell不与你进行交互,而是读取存

/etc/profile与/etc/bashrc、交互式与非交互式、login与non-login shell的区别

线上的memcached又挂了,仍然没有得到core文件.排查原因,同事发现启动memcached的脚本存在可疑问题. 问题一:没有设置memcached工作目录,有可能core dump时没有工作目录写权限 这些脚本由crontab启动.脚本中没有设置工作目录,而这是非root用户的crontab.启动memcached时,工作目录不是memcached可执行文件所在目录.实验证明,这个是用户的home目录,crontab运行的脚本中打印pwd,结果是"home/work",work

/etc/profile与/etc/bashrc、交互式与非交互式、login与non-login shell的差别

线上的memcached又挂了.仍然没有得到core文件. 排查原因,同事发现启动memcached的脚本存在可疑问题. 问题一:没有设置memcached工作文件夹,有可能core dump时没有工作文件夹写权限 这些脚本由crontab启动.脚本中没有设置工作文件夹.而这是非root用户的crontab.启动memcached时,工作文件夹不是memcached可执行文件所在文件夹.实验证明,这个是用户的home文件夹,crontab执行的脚本中打印pwd,结果是"home/work&quo

交互式与非交互式,登录shell与非登录shell

交互式shell和非交互式shell.登录shell和非登录shell的区别.首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录. 交互式shell和非交互式shell(interactive shell and non-interactive shell)交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令.这种模式被称作交互式是因为shell与用户进行交互.这种模式也是大多数用户非常熟悉的:登录.执行一些命令.退出.当你退出后,shell也终止了.s

浅析mysql交互式连接&非交互式连接

https://www.jb51.net/article/81462.htm https://blog.csdn.net/andypan1314/article/details/77930677 (1)interactive_timeout: 服务器关闭交互式连接前等待活动的秒数(2)wait_timeout: 服务器关闭非交互连接之前等待活动的秒数.两者生效取决于:客户端是交互或者非交互的连接.在交互模式下,interactive_timeout才生效:非交互模式下,wait_timeout生

mysql交互式连接&非交互式连接

交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接.那么这时候就是非交互式操作. 参考:MySQL中 timeout相关参数解析 http://www.cnblogs.com/cenalulu/archive/2012/

交互式shell和非交互式shell、登录shell和非登录shell的区别

交互式shell和非交互式shell.登录shell和非登录shell的区别.首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录. 交互式shell和非交互式shell(interactive shell and non-interactive shell)交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令.这种模式被称作交互式是因为shell与用户进行交互.这种模式也是大多数用户非常熟悉的:登录.执行一些命令.退出.当你退出后,shell也终止了.s

(转)SSH批量分发管理&非交互式expect

目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3.3 利用rsync来实现增量备份 1.4 SSH批量管理分发脚本实战 1.5 SSH批量管理总结 2 非交互式expect 2.1 非交互式生成密钥及实现批量管理 2.2 一键批量安装httpd服务 2.3 一键自动化50台规模集群网站 1 SSH批量分发管理 基于口令的,如何实现批量管理:expe

详解shell中source、sh、bash、./执行脚本的区别

复制文章:https://www.jb51.net/article/128918.htm 这篇文章主要介绍了shell中source.sh.bash../执行脚本的区别,需要的朋友可以参考下 1.source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限" 注:该命令通常用命令“.”来替代. 如:source .bash_profile . .bash_profile两者等效. sourc