交互式的Bourne shell
简介
当以交互的方式使用命令行时,shell有一些特殊的内置变量,这些变量中包含一系列选项。如果在选项中包含字母i,则表示shell以交互方式运行。
- # case "$-" in
> *i*) echo This shell is interactive;;
> *) echo This shell is not interactive;;
> esac
以上小脚本检测是否以交互方式运行。
如果Bourne shell是登录shell,它将跟在一系列进程之后启动,然后用户才能看到shell提示符,基本的启动过程如下:
- 系统要运行的第一个进程是init,他的PID是1。它从文件inittab文件读取指令(System V系统),或者派生一个getty进程(BSD系统)。这些进程打开终端端口,以提供标准输入来源、标准输出和标准错误输出的去处,并且在屏幕上显示一个登陆提示符。
- 接下来执行/bin/login程序。提示用户输入口令、加密并验证用户输入的口令、设置初始环境、启动用户的登录shell(登录shell是passwd文件的最后一项,对本章而言就是/bin/sh)。进程首先查找系统文件/etc/profile,并且执行其中的命令。然后在用户的主目录下查找名为.profile的初始化文件。执行完文件.profile中的命令后,屏幕上将显示默认的命令提示符$,然后Bourne shell等待用户输入命令。针对启动到图形界面、虚拟桌面、一个用来启动shell终端的子菜单这种情形比刚刚描述的启动过程要复杂的多。
环境
进程的环境包括:变量、打开的文件、当前的工作目录、函数、资源限制、信号等。它定义了可以从一个进程继承到下一个进程的特性,以及对当前工作环境的配置。用户shell的配置定义在shell的初始化文件中。
未完待续……
交互式的Bourne shell的更多相关文章
- 登陆shell与交互式非登陆shell的区别
登录shell 所谓登录shell,指的是当用户登录系统时所取的那个shell,登录shell属于交互式shell. 登录shell将查找4个不同的启动文件来处理其中的命令. bash shell处理 ...
- Bourne Shell:控制语句、条件判断、文本处理、常用命令
条件判断是一个程序获得智能的基础,而Bourne Shell脚本则通过命令 [ 来模拟大多数编程语言中的条件表达式. shell中支持的控制结构有: (1) if then else fi (2) f ...
- linux 9 -- 交互式使用Bash Shell
二十二. 交互式使用Bash Shell: 1. 用set命令设置bash的选项: 下面为set主要选项的列表及其表述: 选项名 开关缩写 描述 allexport -a 打开此开关 ...
- ubuntu 下非交互式执行远程shell命令
apt-get install sshpass sshpass -p **your_password** ssh -o StrictHostKeyChecking=no "root@$ip& ...
- 交互式shell和非交互式shell的区别
交互式模式就是shell等待你的输入,并且执行你提交的命令.这种模式被称作交互式是因为shell与用户进行交互.这种模式也是大多数用户非常熟悉的:登录.执行一些命令.签退.当你签退后,shell也终止 ...
- /etc/profile与/etc/bashrc、交互式与非交互式、login与non-login shell的差别
线上的memcached又挂了.仍然没有得到core文件. 排查原因,同事发现启动memcached的脚本存在可疑问题. 问题一:没有设置memcached工作文件夹,有可能core dump时没有工 ...
- Linux登录shell和非登录(交互式shell)环境变量配置
使用Jenkins执行shell脚本的时候, 碰到command not found. 比如java mvn, 这些环境变量配置在/etc/profile 中, 但jenkins执行的时候并没有加载. ...
- shell简介
Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...
- [Bash Shell] Shell学习笔记
1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...
随机推荐
- canvas实例(基础)
JS实现五子棋大战:GitHub源码 知识点总结: 第一步.基础: //获取canvas var chess = document.getElementById('chess'); //获取上下文,创 ...
- C++基础--sizeof和strlen的区别
首先,来运行一段程序: #include "stdafx.h" #include <stdio.h> #include <string.h> int mai ...
- SQL Stored Procedure and Function
Anything can be programmable with defined syntax and common lib. )) -- Add the parameters for the st ...
- UIWindow及程序启动的过程
1. UIWindow才有自发显示的功能, 一个程序之所以能显示东西,是因为有window !// [self.window makeKeyAndVisible]; 2. 任何view的显示 ...
- 【原创】SQL SERVER 2012安装配置说明(多图详解)
1. 优先安装软件 1. net framework3.5. 2. 在安装SQL SERVER 2012前需要3.5的支持.在WIN 2012系统可以在系统管理的添加角色和功能中安装,如下将[.NET ...
- 使用QJM实现HDFS的HA配置
使用QJM实现HDFS的HA配置 1.背景 hadoop 2.0.0之前,namenode存在单点故障问题(SPOF,single point of failure),如果主机或进程不可用时,整个集群 ...
- anaconda和jupyter notebook使用方法
查看安装的conda版本 conda --version 如果没有安装anaconda,可以从以下链接下载anaconda或者miniconda,两者安装一个就可以了 miniconda大约50M h ...
- JS正则表达式(RegExp)
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦, ...
- 如何用代码填充S/4HANA销售订单行项目的数量字段
我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...
- win8下使用IIS服务器及自定义服务器端包含模块(SSI)步骤
配置完过段时间就容易忘记,特此记录. 1.开启IIS服务器. 默认没有安装,需要先安装. 打开控制面板--> 打开“程序和功能”--> 左侧选择“启用或关闭windows功能”--> ...