关键词:
Shell总结11-shell运行模式
交互式、非交互式
交互式
以交互式方式执行的shell指的是通过终端terminal和用户互动运行的shell。shell等待你从键盘上输入,然后将结果显示在屏幕上输出。比如执行从字符终端登录界面。
非交互式
以非交互式方式执行的shell就是运行过程中不需要与用户输入输出打交道的shell。比如执行一个静默安装的自动化的脚本。
判断是否交互式
if [ "$PS1" ]; then
echo "this is interactive shell"
fi
登录式、非登录式
登录式
顾名思义需要登录shell:需要用户名、密码才能运行的shell或者指定—login或-l选项的shell
非登录式
非登录shell:不需要用户名、密码就可以打开的shell,例如:默认sh下直接bash就可以打开一个新的非登录shell;在Gnome图形界面下打开的Terminal窗口程序。
常见的shell运行模式
1. 终端登录
包括正常模式ttyN下的终端登录(可以Ctrl+Alt+Fn切换)、远程SSH登录都是交互式+登录式的shell
终端登录
ssh远程登录
Last login: Mon Jul 02 11:35:34 2020 from 192.168.56.1
[nginx@nginx-node01 ~]$ echo $PS1;shopt login_shell
[u@h W]$
login_shell on
[nginx@nginx-node01 ~]$
2. su命令
su在默认没有-或—logoin的情况下是交互式+非登录式的shell
su - username 或 su username —login
[nginx@nginx-node01 ~]$ su - root
Password:
Last login: Mon Jul 20 13:02:37 EDT 2020 on pts/0
[root@nginx-node01 ~]# echo $PS1;shopt login_shell
[u@h W]$
login_shell on
su username
[nginx@nginx-node01 ~]$ su root
Password:
[root@nginx-node01 nginx]# echo $PS1;shopt login_shell
[u@h W]$
login_shell off
3. shell中的命令
a. 本地的子shell中的命令
执行不带"--login"选项的sh或者bash命令(本地的子shell)时为交互式、非登录式shell
[nginx@nginx-node01 ~]$ sh
sh-4.2$ echo $PS1;shopt login_shell
s-v$
login_shell off
[nginx@nginx-node01 ~]$ sh -l
sh-4.2$ echo $PS1;shopt login_shell
s-v$
login_shell on
b. 远程shell中命令
执行ssh远程shell命令时尽管有输入密码认证的过程但是执行命令仍为非交互+非登录式的shell
hackun@MacBookPro:~$ ssh nginx@192.168.56.104 ‘echo $PS1;shopt login_shell‘
nginx@192.168.56.104‘s password:
login_shell off
4. bash脚本
执行本地shell脚本时,为非交互式+非登录式的shell。指定"—login"后,将成为非交互+登录式的shell。
[nginx@nginx-node01 ~]$ cat << EOF >>test.sh
> echo $PS1
> shopt login_shell
> EOF
[nginx@nginx-node01 ~]$ bash test.sh
[u@h W]$
login_shell off
[nginx@nginx-node01 ~]$ bash --login test.sh
[u@h W]$
login_shell on
[nginx@nginx-node01 ~]$
linux0.11-shell程序跑起来了-38(代码片段)
...们说到,Linux通过缺页中断处理过程,将/bin/sh的代码从硬盘加载到了内存,此时便可以正式执行shell程序了。这个shell程序,也就是Linux0.11中要执行的这个/bin/sh程序,它的源 查看详情
linux0.11-shell程序跑起来了-38(代码片段)
...们说到,Linux通过缺页中断处理过程,将/bin/sh的代码从硬盘加载到了内存,此时便可以正式执行shell程序了。这个shell程序,也就是Linux0.11中要执行的这个/bin/sh程序,它的源 查看详情
关于shell变量的继承总结(代码片段)
结论:默认,父shell和子shell的变量是隔离的。sh方式运行脚本,会重新开启一个子shell,无法继承父进程的普通变量,能继承父进程export的全局变量。source或者.方式运行脚本,会在当前shell下运行脚本,相当于把脚本内容加载到... 查看详情
linux0.11-shell命令的执行预热篇-41(代码片段)
Linux0.11-shell命令的执行预热篇-41Shell命令的执行转载Shell命令的执行新建一个非常简单的info.txt文件。name:flashage:28language:java在命令行输入一条十分简单的命令。[root@linux0.11]catinfo.txt|wc-l3这条命令的意思是读取刚刚的info.txt文件&... 查看详情
linux0.11-shell命令的执行预热篇-41(代码片段)
Linux0.11-shell命令的执行预热篇-41Shell命令的执行转载Shell命令的执行新建一个非常简单的info.txt文件。name:flashage:28language:java在命令行输入一条十分简单的命令。[root@linux0.11]catinfo.txt|wc-l3这条命令的意思是读取刚刚的info.txt文件&... 查看详情
linux0.11-shell程序读取你的命令-43(代码片段)
Linux0.11-shell程序读取你的命令-43shell程序读取你的命令转载shell程序读取你的命令新建一个非常简单的info.txt文件。name:flashage:28language:java在命令行输入一条十分简单的命令。[root@linux0.11]catinfo.txt|wc-l3这条命令的意思是读取刚刚... 查看详情
linux0.11-shell程序读取你的命令-43(代码片段)
Linux0.11-shell程序读取你的命令-43shell程序读取你的命令转载shell程序读取你的命令新建一个非常简单的info.txt文件。name:flashage:28language:java在命令行输入一条十分简单的命令。[root@linux0.11]catinfo.txt|wc-l3这条命令的意思是读取刚刚... 查看详情
linux学习总结(代码片段)
一.Linux系统有7个运行级别(runlevel):运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多用户状态(没有NFS)运行级别3:... 查看详情
jenkins总结3-shell脚本(代码片段)
我写shell脚本的功力还很初级,基本都是现学现卖,写得不是很健壮,只能提供个思路,请大家包涵。 我使用的系统只能发函数放到shell最前面。本人还是比较推崇函数式脚本的,方便复用,目前只简单的封装了两... 查看详情
shell从入门到精通(11)shell算术运算(代码片段)
如果要执行算术运算(数学计算),就离不开各种运算符号,和其他编程语言类似,Shell也有很多算术运算符,下面就给大家介绍一下常见的Shell算术运算符,如下表所示。算术运算符说明/含义+、-... 查看详情
shell总结(代码片段)
env查看环境变量set显示环境变量(包括局部变量)设置环境变量:export变量名=value变量名=value,export变量名取消变量unset变量名环境变量的初始化过程:先加载/etc/profile全局变量文件在执行/etc/profile.d的目录下的脚本文件运行$HOME... 查看详情
前端面试总结(代码片段)
HTMLDoctype作用?标准模式与兼容模式各有什么区别??(1)、<!DOCTYPE>声明位于位于HTML文档中的第一行,处于标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现... 查看详情
shell语法(代码片段)
shell语法文章目录shell语法1.简介2.shell变量3.shell传递参数4.shell基本运算符5.echo命令6.`printf`功能7.test8.流程控制9.shell函数10.shell输入输出重定向11.shell文件可以包含外部脚本1.简介#!/bin/bash//告诉系统这个脚本需要什么解释器... 查看详情
小知识点大总结(常用,必会)(代码片段)
1、进入救援模式的几种方法centos7最小化安装,在默认情况下,会出现如下界面:Installcentos7Testthismedia&installcentos7Troubleshooting将鼠标置于第一项,按tab键,会弹出:vlinuzinitrd=initrd.inginst.stage2=hd:LABEL=centosx207x28x86_64quiet此处输入... 查看详情
对复合(协作)算法/策略的封装方法——装饰模式总结(代码片段)
...略模式:继承、组合和接口用法——策略模式复习总结,里有一个鸭子的案例,说到了继承的种种局限性,这可以用策略模式(组合+接口)改进。同样,我们也可以用装饰模式。看一个新的例子——做手抓饼的例子... 查看详情
大数据讲课笔记5.4mapreduce运行模式(代码片段)
...ap阶段3、Reduce阶段4、Shuffle阶段5、其它调优属性三、归纳总结四、上机操作零、学习目标了解MapReduce运行模式理解MapReduce性能优化策略一、导入新课通过 查看详情
始终如一--单例模式分析总结(代码片段)
定义 顾名思议,单例,单一实例,就是在程序运行期间确保某一个类只有一个实例,一般称其为Singleton类。实现方法 既然只能有一个实例,那么肯定不能让程序运行期间随时都能new出一个实例,所以将构造函数私有化,... 查看详情
始终如一--单例模式分析总结(代码片段)
定义 顾名思议,单例,单一实例,就是在程序运行期间确保某一个类只有一个实例,一般称其为Singleton类。实现方法 既然只能有一个实例,那么肯定不能让程序运行期间随时都能new出一个实例,所以将构造函数私有化,... 查看详情