Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Shell系统内置变量

Shell系统内置变量

原创
作者头像
入门笔记
修改于 2021-01-04 02:29:37
修改于 2021-01-04 02:29:37
1.7K0
举报
文章被收录于专栏:入门小站入门小站

在命令行提示符直接执行 env、set 查看系统或环境变量。env 显示用户环境变量,set 显示 Shell 预先定义好的变量以及用户变量。可以通过 export 导出成用户变量。

BASH / SHELL

BASH 和 SHELL 变量记录的是当前 shell 的路径, linux 上通常这两个变量的值都是 / bin/bash.

这两者的区别在于,不是所有的 shell 都有定义 BASH 变量,但一定有定义 SHELL 变量。

另外,当在一个 shell 中启动另一个 shell 的时候, SHELL 变量的值不会发生改变,而 BASH 变量的值会发生改变,指向新 shell 的路径。如下所示:

代码语言:txt
AI代码解释
复制
sh-4.4$ echo $SHELL
/bin/bash
sh-4.4$ echo $BASH
/usr/bin/sh
sh-4.4$

BASH_VERSINFO

该变量定义了一个 6 元素的数组,用于表示当前 bash 的版本信息, 这六个元素的意义分别为:

BASH_VERSINFO0

主版本号

BASH_VERSINFO1

次版本号

BASH_VERSINFO2

补丁版本

BASH_VERSINFO3

编译版本

BASH_VERSINFO4

发行状态

BASH_VERSINFO5

硬件架构。

代码语言:txt
AI代码解释
复制
#!/bin/bash
  
for((i=0;i<=5;i++));do
   echo "BASH_VERSINFO[$i]=${BASH_VERSINFO[$i]}"
done
~        
代码语言:txt
AI代码解释
复制
BASH_VERSINFO[0]=3
BASH_VERSINFO[1]=2
BASH_VERSINFO[2]=57
BASH_VERSINFO[3]=1
BASH_VERSINFO[4]=release
BASH_VERSINFO[5]=x86_64-apple-darwin18

BASH_ARGC

该数组变量存储的是每个 bash 调用栈中传递给 bash 的参数数量。该变量只有在 bash 开启 extdebug 选项的情况下才会设置

BASH_ARGV

该数组变量存储的是每个 bash 调用栈中传递给 bash 的参数列表。该变量只有在 bash 开启 extdebug 选项的情况下才会设置

BASH_COMMAND

当前正在 (或马上要) 执行的命令

BASH_EXECUTION_STRING

bash -c 选项的参数

FUNCNAME

当前正在执行函数的名称, 常用于调试

BASH_SOURCE

FUNCNAME 所定义的源文件,其中 ${FUNCNAME$i} 定义在 ${BASH_SOURCE$i} 文件中

SECONDS

脚本从运行以来经过的时间(单位为秒)。可用于调试性能。

代码语言:txt
AI代码解释
复制
start=$SECONDS
sleep 2
pass=$(($SECONDS - $start))
echo "$pass seconds passed"

SHELLOPTS

冒号分隔的处于开状态的 shell 选项列表。该变量只能通过 set -o(打开选项) / set +o(关闭选项) 来设置。

SHLVL

Shell 嵌套的层次,第一个 shell 的 $SHLVL 为 1, 每启动一个 bash 实例就会 + 1

EMACS

判断 bash 是否在 EMACS 中执行,这种情况下 bash 会禁用行编辑功能

用户信息


EUID

当前用户的有效用户 ID,它在 shell 启动时被设置,之后无法再被修改。

显示相关


PS1 / PS2 / PS3 / PS4 / PROMPT_DIRTRIM

定义提示符

影响 bash 行为的参数


BASH_ENV

该值为 shell 初始化文件的路径,若设置了该值则会执行该值所指定文件内的初始化命令

CDPATH cd 命令的搜索路径,是一个用冒号分隔的目录列表。shell 在执行 cd 命令时会从这些指定的目录列表中寻找要进入的目标路径。

FIGNORE

由冒号分隔的后缀名列表,在进行文件名补全时会忽略以这些后缀名结尾的文件名

GLOBIGNORE

它是由冒号分隔的模式列表,表示通配时忽略的文件名集合。

IFS

内部字段分隔符,影响 read 命令如何将行进行分成词

OSIXLY_CORRECT

设定让 bash 进入 posix mode

TMOUT

用于设置 Shell 的过期时间,TMOUT 不为 0 时,shell 会在 TMOUT 秒后将自动退出.

同时 TMOUT 也用于作为 read 命令的默认超时时间。

EXECIGNORE

它是由冒号分隔的模式列表,表示在 $PATH 中搜索命令时忽略的文件名集合。

TMPDIR

若设置了,则 bash 在该值所指定的目录下创建临时文件

其他

--

BASH_REMATCH

当使用 =~ 进行正则匹配时,该数组变量存储的是整体或个分组匹配的字符串位置,其中

${BASH_REMATCH0}

整个正则表达式匹配的位置

n

第 n 个分组匹配的位置

RANDOM

产生一个 0-32767 之间的随机整数

REPLY

read 命令默认将标准输入存入该变量, select 命令也默认将选择的序号存入该变量。

PROMPT_COMMAND

该变量是一个命令,每次显示主提示符之前都会执行该命令。

DIRSTACK

存放当前目录栈的数组,pushd 和 popd 两个内建命令需要操作该数组,同时也允许手工对该数组内的变量进行赋值从而影响 pushd 和 popd 的行为。 另外,该参数的值可以通过 dirs 命令来显示

COMP_CWORD / COMP_LINE / COMP_POINT / COMP_WORDS / COMPREPLY / HOSTFILE

用于为 bash 自定义补全时使用

HISTCONTROL / HISTFILE / HISTFILESIZE / HISTIGNORE / HISTSIZE

配置 history 命令的行为

MAIL / MAILCHECK / MAILPATH

影响邮件提醒行为

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux学习笔记(四)
接下来一段时间打算学一下linux 学习来源书本《Linux命令行与shell脚本编程大全 第三版》
epoos
2022/06/06
1.1K0
BashShell变量
Bash Shell 使用「环境变量」来存储有关 Shell 会话和工作环境的信息。环境变量分为两类:
hotarugali
2022/02/28
2.4K0
linux怎么查看系统环境变量路径,Linux系统中的环境变量该如何设置与查看
今天小编要跟大家分享的文章是关于Linux系统中的环境变量该如何设置与查看。大家都知道,在 Linux 系统中,有环境变量和 Shell
全栈程序员站长
2022/11/10
21K0
linux怎么查看系统环境变量路径,Linux系统中的环境变量该如何设置与查看
shell系统给定变量大全——及使用方法
在Shell编程中,系统给定的变量(也称为预定义变量)是由系统预设的,用于提供有关脚本运行的环境和状态的信息。这些变量通常不需要用户定义或修改,可以直接在脚本中使用。
红目香薰
2023/10/11
2110
shell系统给定变量大全——及使用方法
Linux基础命令行使用技巧
描述:本章主要学习并记录了Linux中命令行补全以及参数补全的实现方法,还Linux中执行过的命令进行查看,让您想Hacker一样操作终端;
全栈工程师修炼指南
2022/09/29
6K0
Linux基础命令行使用技巧
Linux基础命令行使用技巧
描述:本章主要学习并记录了Linux中命令行补全以及参数补全的实现方法,还Linux中执行过的命令进行查看,让您想Hacker一样操作终端;
全栈工程师修炼指南
2020/10/26
5.9K0
Linux基础命令行使用技巧
有关bash,我希望我能知晓的十件事
简介 我之前的一篇文章比我预想的更受欢迎,因此我想再写一篇文章来介绍一些不太知名的bash功能 正如之前所言,由于我觉得bash是一种要经常使用(且需理解)的技术,所以我在研究bash时写了一本书。虽然许多人并不熟悉bash,但我觉得他们也认为非常重要便足够令人欣喜。 1)^x^y^ 我总在使用的一个小技巧。 从来没有输入过类似的命令? $ grp somestring somefile -bash: grp: command not found 哎,这个命令敲错了,所以你要敲“↑”,然后敲”←“直到”p
小小科
2018/06/20
6620
Linux-Shell变量
1. 变量的设置,读取 1.1变量的读取 echo读取变量 变量前加$ 可以把变量用大括号({})包裹 [root@iZwz9ayvrn26ptadymu9ymZ ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 1.2 变量的设定 等号(=)设定变量的值 *等号两边不能有空格 变量名称只能是英文或者数字,且数字不能在开头 变量内容有空格符,需要用双引号(")或者单引号(')包裹变量内容 双括号内的$可以
悠扬前奏
2019/05/30
3.2K0
Shell特殊变量和命令行参数详解
1.shell变量基础 shell变量是一种很“弱”的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义。 所以若要进行数学运算,必须使用一些命令例如let、declare、exp
小小科
2018/05/04
2.6K0
Shell特殊变量和命令行参数详解
SHELL(bash)脚本编程一:变量
本篇开始,介绍shell脚本编程,更确切的说是bash脚本编程(版本:4.2.46(1)-release)。我们从变量开始。
用户5030870
2019/04/11
2.8K0
培养这10个习惯,你就离UNIX高手更进一步了
来自:IBM developerWorks 链接:https://www.ibm.com/developerworks/cn/aix/library/au-unixtips/ “ 上一篇文章中我们列出了使用 Unix/Linux 系统时的10条建议,相信即便是很熟悉这些概念的老手,一旦重新审视自己平时的某些使用习惯时也会有新的收获。在上一篇的基础上,这里是另外 10 个 UNIX 命令行命令、工具和技术,让你成为更高效的 UNIX 命令行高手。 10个好习惯 使用文件名自动补全功能 (file name c
企鹅号小编
2018/02/07
9630
Linux Shell基础篇三 - 内置命令
Shell 内置命令,就是由 Bash Shell 自身提供的命令,而不是文件系统中的可执行脚本文件。可使用type来确定一个命令是否是内置命令或可执行文件:
兜兜转转
2023/03/08
1.4K0
Linux Shell基础篇三 - 内置命令
【Linux】Shell 变量:你不知道的那些事
在 Linux 系统中,Shell 是用户与内核之间交互的接口程序,为用户提供使用操作系统的接口,也被称为命令解释器。Shell 接收用户输入的命令,并将其转换为 Linux 系统可以理解的操作,最终通过调用相应的程序来完成这些操作。
行者Sun
2024/09/14
1500
【Linux】Shell 变量:你不知道的那些事
sh脚本
上面命令的意思是,如果Command1命令运行成功,则继续运行Command2命令。
用户7962184
2020/11/20
10.9K0
sh脚本
Shell脚本编程_shell简单脚本
  shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,在用户和内核之间充当翻译官的角色,是一个命令解释器。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 shell。
全栈程序员站长
2022/11/09
8.1K0
Shell脚本编程_shell简单脚本
Linux的set命令
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书
Tyan
2020/03/20
5.5K0
CentOS中环境变量和配置文件
bash shell用一个叫做 环境变量(environment variable) 的特性来存储有关shell会话和工作环境的信息。即允许在内存中存储数据,使得在程序或shell中运行的脚本能够访问它们。
Ryan-Miao
2018/10/15
1.8K0
Shell脚本——内置命令
所谓 Shell 内置命令,就是由 Bash 自身提供的命令,而不是文件系统中的某个可执行文件。
栗筝i
2022/12/01
2.2K0
Linux 查看环境变量_linux修改环境变量顺序
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等等。
全栈程序员站长
2022/11/10
24.7K0
bash和shell的入门上
10.取消变量的方法为使用 unset :unset 变量名称例如取消 myname name的设定:unset myname
小柒吃地瓜
2020/04/23
8690
相关推荐
Linux学习笔记(四)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档