Shell总结11-shell运行模式

摘要:
外壳概述11外壳操作模式以交互方式执行的交互式、非交互式交互式外壳是指通过终端终端与用户交互运行的外壳。如果[“$PS1”];顾名思义,necho“thissinteractivesell”fi登录和非登录登录,您需要登录到shell:需要用户名和密码才能运行的shell,或指定登录或-l选项非登录非登录shell的shell:无需用户名和密码即可打开的shell。例如,默认情况下,您可以通过直接在sh下猛击来打开一个新的非登录shell;在Gnome图形界面下打开终端窗口程序。指定“-login”后,它将成为非交互式+登录shell。
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

终端登录

Shell总结11-shell运行模式第1张

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 ~]$ 

免责声明:文章转载自《Shell总结11-shell运行模式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇删除数据库所有连接 (mssql,sqlserver)补习系列(7)-springboot 实现拦截的五种姿势下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Shell终端收听音乐--网易云音乐命令行版

Musicbox:网易云音乐命令行版本 高品质网易云音乐命令行版本,简洁优雅,丝般顺滑,基于Python编写。 这款命令行的客户端使用 Python 构建,以 mpg123 作为播放后端: Vim 式的流畅操作,支持快捷键绑定 支持电台、收藏等各种特色功能 支持 OS X 及各类 Linux 发行版 安装Python2.* pacman -S pytho...

Linux基础---shell基本命令

一、目录及文件操作命令 1、显示目录及文件操作命令 (1)ls命令   作用:用于显示指定目录的目录和文件。   语法:ls [选项] 目录名    常用选项/参数含义如下:   -a:列出目录下所有文件,包括“.“开头的隐藏文件。   -d:显示目录,而不是显示其下的文件。   -i:显示文件的索引节点。(显示索引号)   -k:以k字节的形式表示文件的...

Python—模块

Python—模块 一、模块模块,是用一堆代码实现了某个功能的代码集合,模块分为三种:自定义模块(自己定义)、内置模块(python自带)、开源模块导入模块(1)、导入一个py文件,解释器解释该py文件(2)、导入一个包,解释器解释该包下的 __init__.py 文件 #模块导入import modulefrom module.xx import xxf...

Android查询:模拟键盘鼠标事件(adb shell 实现)

1. 发送键盘事件: 命令格式1:adb shell input keyevent “value” 其中value以及对应的key code如下表所列: KeyEvent Value KEYCODE Comment 0 KEYCODE_UNKNOWN 1 KEYCODE_MENU 在SDK2.1的模拟器中命令失效,sendevent命令可行...

Linux安装loadrunner负载机【转】

1、loadrunner下载地址:http://download.csdn.net/download/intel80586/9542271或者其他资源 2、首先用rpm -qa|grep -i c++命令确认服务器是否已经安装了compat-libstdc++-33-3.2.3-61.i386.rpm,若没有下载安装下载地址:http://vdisk.we...

使用 Shell 调试 GPIO 设备

概述 板:hi3516ev200 灯:接到GPIO1_6 寄存器操作 使用命令:Usage: devmem ADDRESS [WIDTH [VALUE]],其中WIDTH可选值为8, 16, 32, 64,默认值是32。 在地址0x120C0018读取32bit值 # devmem 0x120C0018 在地址0x120C0018写入32bit值0x1...