42 Linux bash shell的内部变量

minishell:[42] Minishell是基于Bash自行创建的Shell 迷你壳 立即下载
内部变量是指能够对bash Shell脚本行为产生影响的变量,它们对Shell及其子Shell都有效,因此,内部变量属于环境变量的范畴,在《37 Linux的环境变量》中介绍了Linux的部分环境变量,包括PWD、OLDPWD、PATH、SHELL和USER,可以使用export对其进行设置。

Linux bash shell的内部变量包括如下,可以使用echo + $内部变量名称 来打印输出内部变量的值(以下说明都基于raspbian):

1、BASH记录了bash Shell的路径,通常为/bin/bash,内部变量SHELL就是通过BASH的值确定当前Shell的类型。

alloy@raspberrypi:~$ echo $BASH
/bin/bash
alloy@raspberrypi:~$ echo $SHELL
/bin/bash

2、BASH_SUBSHELL记录了子Shell的层次,这个变量是在bash版本3之后才出现的。

alloy@raspberrypi:~$ echo $BASH_SUBSHELL
0

3、BASH_VERSINFO是一个数组,包含6个元素,这6个元素用于表示bash的版本信息。

alloy@raspberrypi:~$ echo ${BASH_VERSINFO[0]}
4
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[1]}
2
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[2]}
37
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[3]}
1
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[4]}
release
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[5]}
arm-unknown-linux-gnueabihf

或者运行一个基于循环的脚本可以看到如下的输出:

alloy@raspberrypi:~/linuxshell/chapter9$ ./bashver.sh
BASH_VERSINFO[0]=4
BASH_VERSINFO[1]=2
BASH_VERSINFO[2]=37
BASH_VERSINFO[3]=1
BASH_VERSINFO[4]=release
BASH_VERSINFO[5]=arm-unknown-linux-gnueabihf


4、BASH_VERSION是Linux系统的bash Shell版本,包含了主次版本、补丁级别、编译版本和发行状态,即BASH_VERSINFO数组从0到4的值。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $BASH_VERSION
4.2.37(1)-release

5、DIRSTACK是目录栈的栈顶值,初值为空,可以使用pushd和popd来维护目标栈。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $DIRSTACK
~/linuxshell/chapter9

6、GLOBIGNORE是由冒号分隔的模式列表,表示通配(globbing)时忽略的文件名集合。

7、GROUPS记录了当前用户所属的群组,Linux的一个用户可同时包含在多个组内,因此,GROUPS是一个数组,数组记录了当前用户所属的所有群组号,可以参考《32 查看Linux中的的用户组》

alloy@raspberrypi:~/linuxshell/chapter9$ echo $GROUPS
1004

8、HOSTNAME记录了主机名,可以参考《01 修改ubuntu的主机名称解决“sudo 无法解析主机名称”的错误》。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $HOSTNAME
raspberrypi

9、HOSTTYPE和MACHTYPE一样,都用于记录系统的硬件架构,实际上,它们与BASH_VERSINFO[5]也是等值的。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $HOSTTYPE
arm
alloy@raspberrypi:~/linuxshell/chapter9$ echo $MACHTYPE
arm-unknown-linux-gnueabihf

10、OSTYPE记录了操作系统类型。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $OSTYPE
linux-gnueabihf

11、REPLY用于存放read命令从标准输入(stdin)读入的变量数据。

alloy@raspberrypi:~/linuxshell/chapter9$ read
this is a test for REPLY.
alloy@raspberrypi:~/linuxshell/chapter9$ echo $REPLY
this is a test for REPLY.

12、SECONDS记录脚本从开始执行到结束所耗费的时间,以秒为单位。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $SECONDS
1021

13、SHELLOPTS记录了处于“开”状态的Shell选项(options)列表,它是一个只读变量。

14、SHLVL记录了bash Shell嵌套的层次。

15、TMOUT变量用于设置Shell的过期时间。
骨架动作识别新突破:CTR-GCN的通道拓扑优化策略解析 本文深入解析了CTR-GCN在骨架动作识别中的通道拓扑优化策略。通过引入通道级拓扑细化,CTR-GCN克服了传统GCN共享拓扑结构的局限性,显著提升了动作识别的准确率。文章详细介绍了CTR-GCN的三大核心组件设计,包括特征变换模块、通道拓扑建模和通道聚合技术,并提供了实战调参经验和模型压缩技巧,为计算机视觉领域的研究者和开发者提供了有价值的参考。 阅读详情

相关推荐

NFT图片批量合成及稀有度计算工具

一、制作背景 -当前NFT作品制作的大多方式都是使用部件拼接的形式,然后从大量的可能性结果取优; 二、解决问题 拼接合成的组合数量十分巨大,手工合成费时费力; 合成中对各个部件的使用次数不容易控制,部位出现的概率对作品的稀有度及评分影响较大; 对于生成的作品各个部位的信息(包括来源和使用率)统计繁琐,不利于对作品的介绍中体现; 三、程序功能介绍 1、功能自定义部位稀有度批量合成NFT作品 步骤一:创建各个合成部件文件夹,将图片放到文件夹内 步骤二:软件上设置各个部件对于的图片文件夹及出现的概率 步骤二

Keeping111的博客 4638

Bash中文手册

NAME bash - GNU Bourne-Again SHell (GNU 命令解释程序 “Bourne二世”) 概述(SYNOPSIS) bash [options] [file] 版权所有(COPYRIGHT) Bash is Copyright © 1989-2002 by the Free Software Foundation, Inc. 描述(DESCRIPTION) Bash 是一个与 sh 兼容的命令解释程序,可以执行从标准输入或者文件中读取的命令。 Bash 也整合了 Korn 和

wu1994226的博客 2190

OSPF路由协议配置

构建直连连通让R1、R2、R3、R4加入OSPF,实现全网互通。掌握OSPF邻居状态的解读。掌握单区域OSPF的配置。理解OSPF的基本概念。AR3上的OSPF配置。AR4上的OSPF配置。R1上的OSPF配置。R2上的OSPF配置。

SURTR999的博客 7695

shell 变量的高级用法

内部变量 内部变量,属于环境变量。环境变量还包括用户自定义的环境变量。 BASH BASH记录了bashShell的路径,通常为/bin/bash,内部变量SHELL就是通过BASH的值确定当前Shell的类型 SHELL就是通过BASH的值来确定SHELL的类型的。 ...

chimoren0700的博客 292

STM32移植LVGL(LittleVGL)

**STM32移植LVGL(LittleVGL)**

qq_53000374的博客 1万+

Windows11安装Ubuntu 20.04.3 LTS双系统(详细过程)

一、基础环境 听说BIOS模式的传统MBR模式和新式UEFI模式,会对安装双系统产生影响。Windows11应该都是UEFI吧,可以按win+r输入msinfo32回车确认查看BIOS模式,我的电脑是UEFI+双硬盘 Ubuntu安装准备 1、 官网下载Ubuntu 20.04.3 LTS镜像iso文件:https://ubuntu.com/download/desktop 2、 下载官网推荐的U盘启动制作工具rufus: https://rufus.ie/ 3、制作启动u盘 插入U盘, 运行 rufu

学习随笔 9万+

shell浅谈之一变量和引用

一、简介        简介 二、运行图 (1)如下图1所示。 三、详解 1、开始 (1)开始 四、总结 (1)本博文只发布部分源码,读者可根据思路来进行定制。 (2)在不同的系统下可能还会有乱码出现,可修改程序实现,主要当初没考虑到国际化支持。 (3)源码已经打包上传到csdn上可登录下载(http://download.youkuaiyun.com/deta

乌托邦 3万+

Fortigate 在AWS中配置HA

方案1: 1、将两台服务器配置在相同可用区中,使用飞塔原生HA功能,可以实现配置同步功能。 2、配置SSLVPN,在主服务器不可用时,可以实现自动切换到备用服务器继续提供VPN服务。 当前问题: 1、主挂掉后可以自动切换到备,但是原主服务器修复后不会自动切换到主状态。 2、如下图所示切换中丢包明显,需要客户端开启“保持连接”功能。 配置过程如下: 1、整体架构 2、创建VPC和子网,如下图所示...

子苏蓝莓的博客 892

十一、变量的高级用法

目录1 内部变量1.1 BASH1.2 BASH_SUBSHELL1.3 BASH_VERSINFO1.4 BASH_VERSION1.5 DIRSTACK1.6 GLOBIGNORE1.7 GROUPS1.8 HOSTNAME1.9 HOSTTYPE和MACHTYPE1.10 OSTYPE1.11 REPLY1.12 SECONDS1.13 SHELLOPTS1.14 SHLVL1.15 TM...

Norni的博客 320

银行统一监管报送系统

依据《银行业金融机构数据治理指引》,银行业金融机构应当建立适应监管数据报送工作需要的信息系统,实现流程控制的程序化,提高监管数据加工的自动化程度。银行业金融机构应当将监管数据纳入数据治理,建立工作机制和流程,确保监管数据报送工作有效组织开展,监管数据质量持续提升。银行通常要对接报送EAST5.0、1104、CRSS等近40个监管应用,涉及近1000张报表。表13-01是主要的监管报送应用、报送依据、报送规范、监管机构名称。

银行信息系统应用架构详解 4348

华为OD机试真题 新系统 2026-04-22 C++ 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 168

Shell 的变量功能

应该很好理解吧,y=ax+b,y就是变量,ax+b就是变量的内容,等号左边是未知数,等号右边是已知数,简单来说,变量是一组文字或符号等,来替换一些设置或一串保留的数据。

m0_54929728的博客 924

基于Pycatia的智能孔特征识别技术:无参模型圆心自动化提取方案

基于Pycatia的智能孔特征识别技术:无参模型圆心自动化提取方案

KE17RS的博客 2878

Linux系统管理与编程14:Shell变量及定制bash登录界面

1)字符串赋值:shell默认是字符串赋值wzzwzz2)数值赋值11+1233)激活转义字符pwd/home/wu这个数是:$var08"这个数是:10用户:$USER\t家目录:$HOME\n"用户:wu家目录:/home/wu输入你身份证号:read ID输入你身份证号:12345678123456784echo打印日志文件是日志文件是一二三> do> done一二三一二三$LIST> do> done。

wusam的专栏 1293

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

linux -ksh,Linux Shell - bash & ksh

我知道shell有好多种.例如:TCSH SHELL . BASH SHELL 等.请问共有几种shell,他们都有什么区别?我的系统是RH9,用的是什么shell/谢谢!目前流行的Shell有ash, bash, ksh, csh, zsh等,你可以用下面的命令来查看你。bash(Bourne Again shell)是Linux中最常见的。常见的还有:csh(语法与C语言相近),pdksh(是...

weixin_29002595的博客 1367

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Shell 编程规范与变量

自定义变量是由系统用户自己定义的变量,只在用户自己的 Shell 环境中有效,因此又称为本地变量。在编写 Shell 脚本程序时,通常会设置一些特定的自定义变量,以适应程序执行过程中的各种变化,满足不同的需要。1.定义新的变量Bash 中的变量操作相对比较简单,不像其他高级编程语言(如 C/C++、Java 等)那么复杂。在定义一个新的变量时,一般不需要提前进行声明,而是直接指定变量名称并赋给初始值(内容)即可。定义变量的基本格式为“变量名=变量值”,等号两边没有空格。

2401_83958584的博客 1718

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Linux:shell变量功能和Bash shell的操作环境

http://blog.youkuaiyun.com/pipisorry/article/details/43235263 shell的变量功能 sh和bash命令 两者都是shell,都是解析工具。 bash(Bourne Again SHell) 是Linux标准的默认shell ,它基于...

chuange6363的博客 161

bash linux_Linux 之 bash 编程

刚刚接触Linux的时候可能会混淆一个概念:shell与bash,这两者之间的关系也都是模模糊糊的,使用Windows系统的人可能对shell没啥感觉,因为只需要点点鼠标,计算机就能安装我们的需求进行相关的操作,那么为什么计算机就能设别我们的操作呢,人机有别,人的语言,机器怎么会懂呢,这时就需要一个翻译,将语言动作翻译给机器 ,shell就是充当人与计算机之间的翻译官。 在linux中图形界面不...

weixin_39962758的博客 86

Linux学习之Shell基础——Bash变量——用户自定义变量

1、什么是变量 》变量是计算机内存的单元,其中存放的值可以改变。当shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使得系统获知用户相关设置,变量也可以用于保存暂时信息。 2、变量设置规则 》变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。 》在...

智欣约的博客 417

linux bash shell变量操作

Centos 修改terminal命令行,每行开始的用户名,主机名,目录 export PS1="> " 每行都将以> 开始 export PS1=" \W:> " 每行都将以 当前目录:> 开始 export PS1="[\u@\h \W]\$" 回复默认,默认是以[用户名@主机名 当前目录]$开头 PS1中字符含义如下 \a The 'be...

youyudexiaowangzi的专栏 503

Linux_shell基础

一、什么是Shell脚本   Shell脚本(英语:Shell script),又称Shell命令稿、程序化脚本,是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,文件操作等。 简而言之:Shell既是一种命令语言,又是一种程序设计语言...

R1011的博客 2090

Linux笔记42--Shell基础12-Bash变量5-数值运算与运算符

Linux笔记42–Shell基础12-Bash变量5-数值运算与运算符 declare声明变量类型 declare [+/-] [选项] 变量名 选项 含义 - 给变量设定类型属性 + 取消变量的类型属性 -i 将变量类型声明为整数型(integer) -x 将变量声明为环境变量 -p 显示指定变量的被声明的类型 aa=11 bb=22 cc=aa+aa+...

zhaandzha的博客 339

bash 不是内部或外部命令_使用 source 命令将函数和变量导入 Bash | Linux 中国

source 就像 Python 的 import 或者 Java 的 include。学习它来扩展你的 Bash 能力。 来源:https://linux.cn/article-12346-1.html作者:Seth Kenlon译者:geekpi(本文字数:3145,阅读时长大约:4 分钟)登录 Linux shell 时,你将继承特定的工作环境。对于 shell 而言,“ 环境(envir...

weixin_34698042的博客 383

【Linux基础-8】Shell基础

什么是shell?Shell(外壳) 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。什么是脚本?脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑)。

qq_45695920的博客 893
上一篇: 41 pkg-config和gtk+
下一篇: 45 如何在Linux下查看和切换shell
alloy
博客等级 码龄19年 15粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值