shell总结11-shell运行模式(代码片段)

elfcafe elfcafe     2022-12-07     483

关键词:

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出一个实例,所以将构造函数私有化,... 查看详情