当前位置: 首页 > news >正文

shell的两种属性: 交互(interactive)与登录(login)

1. 背景

在看shell变量的时候引起了兴趣: 局部变量,全局变量,环境变量,shell的配置文件,参考博客:

http://c.biancheng.net/view/773.html

2. 交互式与非交互式

参考博客:

shell的两个属性:是否交互式(interactive), 是否登录(login) - 知乎 

man bash:

通常的理解是:

 man手册中给我们提供了怎么判断交互与非交互的方法:

 所以我看看我自己的shell是否是交互式的:

liaojunwu@liaojunwu-virtual-machine:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ echo $-
himBH
liaojunwu@liaojunwu-virtual-machine:~$ 

 3. 登录与非登陆

man bash:

通常的理解是:

 su和su -命令的区别参考博客: 一分钟知识点:linux命令之su 和 su - 

可以用shopt login_shell的方法来看看shell是否设置了login_shell选项,我看看我自己的shell:

liaojunwu@liaojunwu-virtual-machine:~$ shopt login_shell
login_shell    	off
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ su - liaojunwu --login
密码: 
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ shopt login_shell
login_shell    	on
liaojunwu@liaojunwu-virtual-machine:~$ 

 4. 为什么要知道这两种属性?

因为涉及到shell配置方式的不同,继续看man手册:

交互与登录属性一共有四种组合,我们只看三种:

登录交互与登录非交互: bash配置shell的顺序是:

/etc/profile->~/.bash_profile->~/.bash_login->~/.profile->~/.bashrc

展开/etc/profile又可以看到登录交互会去配置/etc/bash.bashrc

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).if [ "$PS1" ]; thenif [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then# The file bash.bashrc already sets the default PS1.# PS1='\h:\w\$ 'if [ -f /etc/bash.bashrc ]; then. /etc/bash.bashrcfielseif [ "`id -u`" -eq 0 ]; thenPS1='# 'elsePS1='$ 'fifi
fiif [ -d /etc/profile.d ]; thenfor i in /etc/profile.d/*.sh; doif [ -r $i ]; then. $ifidoneunset i
fiexport PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

非登录交互时: bash的配置顺序是:

/etc/bash.bashrc->~/.bashrc

我们可以看到不论是/etc/bash.bashrc还是~/.bashrc,都要求是交互模式才行:

 

 5. 验证

登录交互: /etc/profile->/etc/bash.bashrc->~/.bash_profile->~/.bash_login->~/.profile->~/.bashrc

liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ shopt login_shell
login_shell    	on
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ logout
liaojunwu@liaojunwu-virtual-machine:~$ exit
注销
liaojunwu@liaojunwu-virtual-machine:~$ exit
注销
liaojunwu@liaojunwu-virtual-machine:~$ exit
注销
liaojunwu@liaojunwu-virtual-machine:~$ su - root
密码: 
[DEBUG]in /etc/profile!
[DEBUG]in /etc/bash.bashrc!
root@liaojunwu-virtual-machine:~# 
root@liaojunwu-virtual-machine:~# 
root@liaojunwu-virtual-machine:~# su - liaojunwu --login
[DEBUG]in /etc/profile!
[DEBUG]in /etc/bash.bashrc!
[DEBUG]in ~./profile!
[DEBUG]in ~./bashrc !
liaojunwu@liaojunwu-virtual-machine:~$ 

非登录交互: /etc/bash.bashrc->~/.bashrc

[DEBUG]in /etc/bash.bashrc!
[DEBUG]in ~./bashrc !
liaojunwu@liaojunwu-virtual-machine:~$ echo $-
himBH
liaojunwu@liaojunwu-virtual-machine:~$ shopt login_shell
login_shell    	off
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ 
liaojunwu@liaojunwu-virtual-machine:~$ bash -i
[DEBUG]in /etc/bash.bashrc!
[DEBUG]in ~./bashrc !
liaojunwu@liaojunwu-virtual-machine:~$ 

6. PS1变量

参考博客: bash下变量PS1的完整理解_ps1变量_whowin的博客-CSDN博客

相关文章:

shell的两种属性: 交互(interactive)与登录(login)

1. 背景 在看shell变量的时候引起了兴趣: 局部变量,全局变量,环境变量,shell的配置文件,参考博客: http://c.biancheng.net/view/773.html 2. 交互式与非交互式 参考博客: shell的两个属性:是否交互式(interactive), 是否登录…...

实现简单的element-table的拖拽效果

第一步&#xff0c;先随便创建element表格 <el-table ref"dragTable" :data"tableData" style"width: 100%" border fit highlight-current-row><el-table-column label"日期" width"180"><template slot-sc…...

Web网页浏览器远程访问jupyter notebook服务器【内网穿透】

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#xff0c;如…...

干翻Dubbo系列第十一篇:Dubbo常见协议与通信效率对比

文章目录 文章说明 一&#xff1a;协议 1&#xff1a;什么是协议 2&#xff1a;协议和序列化关系 3&#xff1a;协议组成 &#xff08;一&#xff09;&#xff1a;头信息 &#xff08;二&#xff09;&#xff1a;体信息 4&#xff1a;Dubbo3中常见的协议 5&#xff1a;…...

春秋云镜 CVE-2020-17530

春秋云镜 CVE-2020-17530 S2-061 靶标介绍 对CVE-2019-0230的绕过&#xff0c;Struts2官方对CVE-2019-0230的修复方式是加强OGNL表达式沙盒&#xff0c;而CVE-2020-17530绕过了该沙盒。当对标签属性中的原始用户输入进行评估时&#xff0c;强制 OGNL 评估可能会导致远程代码执…...

【java毕业设计】基于Spring Boot+Vue+mysql的论坛管理系统设计与实现(程序源码)-论坛管理系统

基于Spring BootVuemysql的论坛管理系统设计与实现&#xff08;程序源码毕业论文&#xff09; 大家好&#xff0c;今天给大家介绍基于Spring BootVuemysql的论坛管理系统设计与实现&#xff0c;本论文只截取部分文章重点&#xff0c;文章末尾附有本毕业设计完整源码及论文的获取…...

华为在ospf area 0单区域的情况下结合pbr对数据包的来回路径进行控制

配置思路&#xff1a; 两边去的包在R1上用mqc进行下一跳重定向 两边回程包在R4上用mqc进行下一跳重定向 最终让内网 192.168.10.0出去的数据包来回全走上面R-1-2-4 192.168.20.0出去的数据包来回全走 下面R1-3-4 R2和R3就是简单ospf配置和宣告&#xff0c;其它没有配置&#…...

PyQt5登录界面跳转

目录 1、设计ui界面 2、设计逻辑代码&#xff0c;实现登录界面跳转 3、结果 1、设计ui界面 设计后的ui界面 在这里可以设置密码不显示 这里可以设置快捷键 最后将ui界面转为py文件后获得的逻辑代码为&#xff1a;&#xff08;文件名为Login.py&#xff09; # -*- coding: u…...

git add 用法

git add 是 Git 的一个命令&#xff0c;用于将更改的文件加入到暂存区&#xff08;staging area&#xff09;&#xff0c;准备提交这些更改。以下是该命令的常见用法&#xff1a; 添加单个文件 git add 文件名添加多个文件 git add 文件名1 文件名2 ...添加所有当前目录下的更改…...

系统架构设计师---2018年下午试题1分析与解答(试题三)

系统架构设计师---2018年下午试题1分析与解答 试题三 阅读以下关于嵌入式实时系统相关技术的叙述,在答题纸上回答问题 1 和问题 2。 【说明】 某公司长期从事宇航领域嵌入式实时系统的软件研制任务。公司为了适应未来嵌入式系统网络化、智能化和综合化的技术发展需要,决定…...

面试时如何回答接口测试怎么进行

一、什么是接口测试 接口测试顾名思义就是对测试系统组件间接口的一种测试&#xff0c;接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 …...

【LeetCode】647.回文子串

题目 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会…...

【Git】SSH到底是什么

一、SSH初探 1、SSH是什么&#xff1f; SSH是一个安全协议&#xff0c;类似有SSL、TSL Git有四种协议&#xff1a;本地协议、Git协议、HTTP协议、SSH协议 SSH协议的优缺点&#xff1a; 优点&#xff1a;SSH访问更加安全&#xff0c;有利于公司的开发维护&#xff0c;并且可…...

当你出差在外时,怎样轻松访问远程访问企业局域网象过河ERP系统?

文章目录 概述1.查看象过河服务端端口2.内网穿透3. 异地公网连接4. 固定公网地址4.1 保留一个固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址连接 概述 ERP系统对于企业来说重要性不言而喻&#xff0c;不管是财务、生产、销售还是采购&#xff0c;都需要用到ERP系统来协助。…...

机器学习与模型识别1:SVM(支持向量机)

一、简介 SVM是一种二类分类模型&#xff0c;在特征空间中寻找间隔最大的分离超平面&#xff0c;使得数据得到高效的二分类。 二、SVM损失函数 SVM 的三种损失函数衡量模型的性能。 1. 0-1 损失&#xff1a; 当正例样本落在 y0 下方则损失为 0&#xff0c;否则损失为…...

在CentOS7.9上安装最新版本Docker安装步骤

1、查看系统版本&#xff1a; cat /etc/redhat-release 2、卸载原有版本&#xff08;如有的话&#xff09; sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ d…...

基于 spring boot 的动漫信息管理系统【源码在文末】

半山腰总是最挤的&#xff0c;你得去山顶看看 大学生嘛&#xff0c;论文写不出&#xff0c;代码搞不懂不要紧&#xff0c;重要的是&#xff0c;从这一刻就开始学习&#xff0c;立刻马上&#xff01; 今天带来的是最新的选题&#xff0c;基于 spring boot 框架的动漫信息管理系…...

vue项目根据word模版导出word文件

一、安装依赖 //1、docxtemplaternpm install docxtemplater pizzip -S//2、jszip-utilsnpm install jszip-utils -S//3、pizzipnpm install pizzip -S//4、FileSaver npm install file-saver --save二、创建word模版 也就是编辑一个word文档&#xff0c;文档中需要动态取值的…...

PHP 从 URL(链接) 字符串中获取参数

PHP 从 URL&#xff08;链接&#xff09; 字符串中获取参数 //URL(链接)字符串 $url https://www.baidu.com/?name小洪帽i&sex男&age999; //parse_url 函数从一个 URL 字符串中获取参数 $urlparse_url($url); //输出获取到的内容 echo "<pre>"; pri…...

第一百三十一天学习记录:数据结构与算法基础:栈和队列(下)(王卓教学视频)

队列的表示和操作的实现 循环顺序队列是一种使用数组来实现的队列结构&#xff0c;其中头指针和尾指针表示队列的头部和尾部位置。 当队列为空时&#xff0c;头指针和尾指针都指向同一个位置&#xff0c;即数组的第一个位置。这是因为在空队列中&#xff0c;没有任何元素可以作…...

低成本低功耗认证芯片推荐——LCS4110R

LCS4110R是以32位安全CPU内核为基础的高性价比安全芯片&#xff0c;符合EAL4安全等级设计要求&#xff0c;自带DES/TDES硬件协处理器。LCS4110R芯片是业内拥有自主设计的产品&#xff0c;集成内部文件系统&#xff0c;支持LKCOS系统&#xff0c;自主可控&#xff0c;供货稳定。…...

BG3 Mod Manager:智能模组管理工具让博德之门3模组体验升级

BG3 Mod Manager&#xff1a;智能模组管理工具让博德之门3模组体验升级 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 博德之门3作为一款备受欢迎的…...

AI中混淆矩阵及其核心评估指标案例

AI中混淆矩阵及其核心评估指标案例...

Adams导入SOLIDWORKS模型“隐身”难题:从Parasolid格式到视图显示的完整排查指南

1. 当你的模型在Adams中"隐身"了怎么办&#xff1f; 最近有个做机械仿真的朋友跟我吐槽&#xff0c;说他在SOLIDWORKS里精心设计的模型&#xff0c;导出为Parasolid格式后导入Adams&#xff0c;结果模型树里明明有显示&#xff0c;3D视图区却空空如也。这种"看…...

pg_textsearch:革新Postgres文本搜索的现代工具

【导语&#xff1a;GitHub上的pg_textsearch是一款适用于Postgres的现代排名文本搜索工具&#xff0c;具备简单语法、可配置参数等特性&#xff0c;目前已达v1.0.0版本可用于生产环境&#xff0c;对Postgres文本搜索领域带来新变革。】pg_textsearch&#xff1a;Postgres文本搜…...

STM32CubeMX实战指南:DMA驱动USART高效数据传输

1. DMA与USART协作的核心价值 第一次接触STM32的DMA功能时&#xff0c;我正被一个传感器数据采集项目折磨得焦头烂额。当时用传统的中断方式处理串口数据&#xff0c;CPU占用率直接飙到70%&#xff0c;整个系统卡得像老式拨号上网。直到尝试了DMAUSART组合&#xff0c;才真正体…...

cool-admin(midway版)前端表单验证:AsyncValidator与异步校验完整指南

cool-admin(midway版)前端表单验证&#xff1a;AsyncValidator与异步校验完整指南 【免费下载链接】cool-admin-midway &#x1f525; cool-admin(midway版)一个很酷的后台权限管理框架&#xff0c;模块化、插件化、CRUD极速开发&#xff0c;永久开源免费&#xff0c;基于midwa…...

Qwen3-14B GPU算力优化实践:显存占用降低28%的FlashAttention-2配置

Qwen3-14B GPU算力优化实践&#xff1a;显存占用降低28%的FlashAttention-2配置 1. 开箱即用的私有部署方案 对于想要快速部署Qwen3-14B大模型的企业和个人开发者来说&#xff0c;这个经过优化的私有部署镜像提供了完美的解决方案。它基于RTX 4090D 24GB显存显卡和CUDA 12.4环…...

10个C语言开源项目解析与学习指南

1. 10个值得学习的C语言开源项目解析 作为一名在嵌入式领域摸爬滚打多年的开发者&#xff0c;我深知阅读优秀开源代码对提升编程能力的重要性。今天要分享的这10个C语言项目&#xff0c;每一个都是精炼而实用的典范&#xff0c;特别适合想要深入理解系统编程、网络协议和底层实…...

终极指南:3步用VR-Reversal将3D视频转为2D,普通设备也能自由探索VR世界

终极指南&#xff1a;3步用VR-Reversal将3D视频转为2D&#xff0c;普通设备也能自由探索VR世界 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址…...