shell登录模式及其相应配置文件(转)

  参考《linux命令、编辑器与shell编程》(清华大学出版社)

  当启动shell时,它将运行启动文件来初始化自己。具体运行哪个文件取决于该shell是登陆shell还是非登陆shell的交互方式(比如通过bash),又或者是一个非交互式shell(用来执行shell脚本)。要执行启动文件中的命令,用户就必须具备读的权限,而一般的Linux发行版本都会把对应的命令放在一些启动文件中。

1:交互式登陆shell

交互式登陆shell指的是当用户登录系统时所用的那个shell(可以默认指定,如bash shell)。登录shell 将查找几个不同的启动文件来处理其中的命令, bash shell 处理文件的顺序如下:

/etc/profile shell首先执行/etc/profile中的命令。设置这个文件后,可以为系统内所有的bash用户建立默认的特征(不同版本的Linux在此文件放置的命令不尽相同);

~/.bash_profile~/.bash_login~/.profile 然后shell依次查找这些文件,并执行它找到的第一个文件中的命令。可以将命令放在这些文件中,以重写/etc/profile文件中默认的设置;

~/.bash_logout 当用户注销时,bash执行文件~/.bash_logout中的命令,这个文件包含了退出会话时执行的清理命令,如:删除临时文件等;

2:交互式非登陆shell

交互式非登陆shell指的是如果启动了一个bash shell 而没有等录系统(如在CLI 提示符中键入bash),则启动了一个交互式非登录shell。交互式非登录shell并不执行前面提到的启动文件中的命令,然而交互式非登陆shell从登录shell继承了由这些启动文件设置的shell变量。

/etc/bashrc 尽管不是通过bash直接调用,但许多~/.bashrc文件调用/etc/bashrc。这种设置使得超级用户可以为系统内的非登陆shell建立默认属性。

.bashrc 交互式非登陆shell执行~/.bashrc文件中的命令,而登陆shell的启动文件(如.bash_profile)通常会运行这个文件。这样,登陆shell和非登陆shell都可以运行.bashrc中的命令了。

3:非交互式shell

非交互式shell指的是以shell script(脚本)方式运行。在这种模式在运行时shell 并不与用户进行交互(除非在运行时需要用户指定运行参数),而是读取存放在文件中的命令并执行它们。当它读到文件的结尾,shell 也就终止了。这些shell从登陆时就继承了由这些启动文件设置的shell变量。

BASH_ENV 非交互式shell查找环境变量BASH_ENV(或者当作为sh调用时为的ENV),并执行由该变量命名的文件中的命令。

http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580744.html

时间: 2024-08-10 17:27:28

shell登录模式及其相应配置文件(转)的相关文章

shell脚本执行及配置文件

linux之shell脚本执行及配置文件 bash脚本执行方法:     1 解释器直接运行         /usr/bin/bash bash FOO.sh     2 使用路径运行脚本(需要有x权限)         chmod +x FOO.sh         /PATH/TO/FOO.sh     3 使用.或source命令执行脚本         . /PATH/TO/FOO.sh         source /PATH/TO/FOO.sh     1,2执行方法和3执行方法的

Shell基础-环境变量配置文件

source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc 其中/etc/profile /etc/profile.d/*.sh /etc/bashrc 对所有用户都生效 ~/.bash_profile  ~/.bashrc只对当前用户生效 环境变量配置文件调用顺

shell别名,管道,用户配置文件,变量,read

一.shell基础 cat /etc/shells  当前操作系统可以使用的shell 什么是shell 实现某种功能的,有执行权限的文本文件 命令行解释器 内建命令 (系统内部提供的命令) 外建命令 (安装对应的软件包才有的命令) type cd //查看cd是属于什么类型的命令 支持快捷键 支持tab健补全 历史命令history -c    //清除历史命令 -w    //马上保存刚执行的命令进.bash_history 别名 如何查看当有系统已有别名命令 alias 如何自定义别名命令

shell脚本批量生成配置文件

如果管理的站点和服务器较多的情况下,每次修改配置文件都相当痛苦.因而想到了用shell脚本来批量生成配置文件和配置数据.下面这个脚本是为了批量生成nagios监控配置文件的一个shell脚本程序.其原理是事先定义一个shell脚本模板,然后每个需要监控的站点复制一份模板替换掉模板文件里面的变量. 1.准备模板文件webcheck.template more webcheck.template ###################WEBURL define start##############

管道符和作业控制 shell变量 环境变量配置文件

8.6 管道符和作业控制 管道符的作用在于将符号前面的结果丢给符号后面的命令.管道符后面并不是所有的命令都可以,一般针对文档操作的命令比较常用,eg:cat.less.head.tail.grep.cut.sort.wc.uniq.tee.tr.split.sed.awk等等. cat 1.txt | wc -l ;cat 1.txt |grep 'aaa'ctrl z 暂停一个任务 //把暂停的任务调回来用fg//jobs查看后台的任务bg[id]把任务调到前台 //丢到后台并运行//命令后面

Linux Shell基础 环境变量配置文件

source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [[email protected] ~]# source 配置文件 或 [[email protected] ~]#.配置文件 "."就是 source 命令 环境变量配置文件 在环境变量配置文件中保存了对系统的操作环境生效的系统默认环境变量,比如 PATH.HISTSIZE.PS1.HOS

Shell编程-环境变量配置文件

1.source命令 修改配置文件后,必须注销重新登陆才能生效,使用source命令可以不用重新登陆 source  配置文件 . 配置文件 环境变量配置文件中主要是定义对系统操作环境生效的系统默认环境变量. 系统登入会加载的配置文件,放在/etc下会对: /etc/profile /etc/profile.d/*.sh ~/.bashrc ~/.bash_profile /etc/bashrc 2.环境变量配置文件的功能 正常加载: su切换用户 /etc/profile的作用: USER变量

shell解析my.cnf配置文件

my.cnf配置格式如下 vi my.cnf[client]port=3306socket=/tmp/mysql.socket [mysqld]port=3306server-id=1datadir=/usr/local/mysql/data [mysqld_safe]port=3306 more parseMy.sh #!/bin/bashcnf=$(cd `dirname $0`;pwd)"/my.cnf" #得到区块数组g_sec=(`sed -n '/\[*\]/p' $cnf

shell脚本--02修改配置文件中的IP

1.修改Json中的IP $ ./ip.sh '8.8.8.1' #!/bin/bash#localIP=$(command)#localIP='/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|grep 8|awk '{print $2}'|tr -d "addr:"'for ip in $(< /home/.../conf/env.json);do if [ ${ip} == "9.9.0.224