交互式shell和非交互式shell、登录shell和非登录shell:

我们在图形交互界面操作时,是交互式的,先理解交互式下的登陆和非登录概念:

概念 举例 特点
登陆shell 用户登陆时,输入用户名和密码登陆的shell,或bash --login命令打开的shell 登陆时读取并执行/etc/profile·和~/.bash_profile、~/.bash_login、~/.profile中第一个存在的文件,通常这三个文件中会source ~/.bashrc。登出时执行~/.bash_logout
非登陆shell 用户登陆时不需要系统认证打开的shell,或bash命令打开的shell 登陆时读取并执行~/.bashrc

我们时常远程执行脚本或者 (sh some.sh./some.sh)直接执行脚本时会遇到缺少环境变量的问题,其实就是因为我们使用的是非交互式非登录shell。该模式下,加载的$BASH_ENV定义的文件。

命令bash启动shell时,是可以通过选项改变其行为的,(sh 基本兼容bash这些设定)

bash [长选项] [选项] [脚本]

常用选项:

选项 含义
-i shell在交互模式下运行
-l shell作为登陆shell
-r 启动受限shell
-- 选项结束标志,后面的内容当做文件名或参数,即使他们以-开头
--login -l
--noprofile 阻止读取初始化文件/etc/profile、~/.bash_profile、~/.bash_login、~/.profile
--norc 在交互式shell,阻止读取初始化文件~/.bashrc。如果shell以sh调用的话,该选项默认是打开的。
--recfile file 在交互式shell,指定初始化文件是file而不是~/.bashrc
--version 版本信息

查看登录式:shopt login_shell

# 如新起一个bash:
> bash
> shopt login_shell
login_shell     off
> bash --login
> shopt login_shell
login_shell     on
# ssh 一个ip
ssh xxxxxxx
> shopt login_shell
login_shell     on

查看交互式法1:echo $PS1 # 非空表示交互式

> echo $PS1
\u@\h:\w>
> cat test.sh
echo $PS1
shopt login_shell
> sh test.shlogin_shell      off

查看交互式法2:echo $- # 输出中包含i则表示是交互式shell

> echo $-
himBH
> cat test.sh
echo $-
shopt login_shell
> sh test.sh
hB
login_shell     off
> bash -i test.sh
himB
login_shell     off
> sh -i test.sh
himB
login_shell     off

交互式shell和非交互式shell、登录shell和非登录shell相关推荐

  1. 交互式、非交互式,登录式、非登录式Shell

    交互式Shell和非交互式Shell 交互式模式:在终端上执行,shell等待你的输入,并且立即执行你提交的命令.这种模式被称作交互式是因为shell与用户进行交互.这种模式也是大多数用户非常熟悉的: ...

  2. Linux随笔10-Ubuntu网络配置、非交互式远程主机登录以及shell中的数组应用(冒泡排序数组中的元素)

    Contents 1. Ubuntu系统网络配置总结 1.1. 配置主机名 1.2. 配置网卡名称 1.3. 配置网卡IP地址 2. 非交互式远程主机登录 2.1. 使用expect实现 2.2. 使 ...

  3. shell的交互式和非交互式登录

    工作中经常碰见环境变量加载问题,归根结底就是配置文件的加载问题. 一般会有四种模式:交互式登陆.非交互式登陆.交互式非登陆.非交互非登陆. 交互式和非交互式对环境变量的加载: +----------- ...

  4. [车联网安全自学篇] ATTACK安全之交互式/非交互式Shell和登录式/非登录式Shell的检测

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 0x01 前言 Linux下默认的shell是Bourne ...

  5. /etc/profile与/etc/bashrc、交互式与非交互式、login与non-login shell的差别

    线上的memcached又挂了.仍然没有得到core文件. 排查原因,同事发现启动memcached的脚本存在可疑问题. 问题一:没有设置memcached工作文件夹,有可能core dump时没有工 ...

  6. mysql 反弹shell_反弹shell升级成交互式shell

    实验环境: A : kali 虚拟机 B: centos7.5 虚拟机 1. A 机 kali 虚拟机 设置监听 端口 root@kali64:~# nc -lvvp 9001 # 端口随便定义,没被 ...

  7. Linux命令之 chsh -- 用来更换登录系统时使用的shell

    文章目录 命令简介 常用选项 参考示例 查看系统安装了哪些shell的两种方法 查看当前正在使用的 shell 修改当前登录用户的shell 命令简介 chsh 命令用来更换登录系统时使用的shell ...

  8. linux脚本登录启动失败,在Linux上检查用户登录成功与失败的shell脚本

    在Linux上检查用户登录成功与失败的shell脚本 Linux管理员的典型任务之一是检查Linux系统中成功和失败的登录尝试. 手动验证它们非常困难,因为" /var/log/secure ...

  9. Linux下非交互式sshpass登录

    摘要 在命令行 非交互的SSH登录的时候,一般我们可以借助于生成用户的公钥私钥对,然后把公钥添加到远程主机的authorized_keys文件,可以实现非交互无密码登录. 其实这里也可以有另外一种方式 ...

最新文章

  1. 保护8亿终端 阿里聚安全携手信通院打造B2C资金安全闭环
  2. 欧几里得算法和扩展欧几里得算法的简单例子
  3. 云小课 | MRS和自建Hadoop相比,有哪些优势?
  4. TensorFlow 图片预处理
  5. Windows Internet Explorer 8 简体中文正式版发布!
  6. [LeetCode]Count and Say
  7. CTR点击率预估实战分享
  8. STM32应用文件系统--W25Q256(RTT系统)
  9. 网吧服务器记录修改,网吧服务器ip地址修改
  10. uni-app项目的开发和发布流程(包括开发版、体验版、正式版)
  11. 毕业论文查重过关最强最全规律
  12. 【typecho插件】typecho邮箱插件LoveXiaozhou是一款Typecho邮件通知类插件、小周
  13. java StringBuilder用法
  14. 苹果Mac电脑怎么能彻底的卸载软件?
  15. 计算机组成原理选择题
  16. SkyWalking触发告警发送邮箱
  17. Halting problem
  18. java重写的目的是什么_什么是重写?重写的作用?
  19. 智能蜂箱管理系统——物联网工程专业软硬结合课设 计算机专业课程设计 大作业 项目(安卓,Springboot后端,网页数据展示前端,ESP8266传输数据,MQTT服务器)
  20. 计算机信息安全及职业道德,CISP人员职业道德的准则

热门文章

  1. Quorum联盟链开发入门
  2. 小时候想玩的游戏---任天堂n64
  3. 2021-10-15 TF卡及晶体的PCB封装创建
  4. win7禁用手机便携式设备_在便携式Firefox(和其他便携式应用)中禁用启动屏幕...
  5. 订单系统和前台系统的交互---预订单--订单--支付--登录?
  6. 常用的OCR文字识别软件有哪些
  7. python中的编码问题(decode,encode,codecs)
  8. 作为测试人员,你需要掌握哪些,常用软件测试工具?
  9. 无法定位序数XX于动态链接库XX.dll的解决办法
  10. ESXI 7.02 Intel 核心显卡直通开启3D加速