5.2 Bash 变量

评论 0 浏览 0 2023-01-26

这些变量是由Bash设置或使用的,但其他shell通常不会特别对待它们。

Bash使用的一些变量在不同的章节中都有描述:用于作业控制的变量(见7.3 作业控制的变量)。

_

($_,下划线。)在shell启动时,设置为用于调用环境或参数列表中传递的正在执行的shell或shell脚本的路径名。 随后,扩展到前台执行的前一个简单命令的最后一个参数。也设置为用于调用每个被执行的命令的完整路径名,并放置在导出到该命令的环境中。 检查邮件时,该参数持有邮件文件的名称。

BASH

用来执行当前Bash实例的完整路径名。

BASHOPTS

一个用冒号分隔的启用的shell选项的列表。列表中的每个字都是shopt内置命令的-s选项的有效参数(见2 Shopt 内置程序)。出现在BASHOPTS中的选项是那些由’shopt’报告为‘on选项的。 如果Bash启动时环境中存在这个变量,在读取任何启动文件之前,列表中的每个shell选项将被启用。这个变量是只读的。

BASHPID

扩展到当前Bash进程的进程ID。在某些情况下与$$不同,比如子shell不需要重新初始化Bash。对BASHPID的赋值没有影响。如果BASHPID没有被设置,它将失去其特殊的属性,即使随后被重置。

BASH_ALIASES

一个关联数组变量,其成员对应于由alias内置程序维护的内部别名列表。 (见4.1 Bourne Shell内置程序)。 添加到这个数组的元素会出现在别名列表中;但是,取消数组元素目前不会导致别名从别名列表中删除。 如果BASH_ALIASES被取消设置,它将失去其特殊属性,即使它随后被重新设置。

BASH_ARGC

一个数组变量,其值是当前bash执行调用栈中每一帧的参数数。当前子程序(用.source执行的shell函数或脚本)的参数数在栈的顶部。当一个子程序被执行时, 传递的参数数会被推到BASH_ARGC上。shell只有在扩展调试模式下才会设置BASH_ARGC (参见2 Shopt 内置程序关于shopt内置的extdebug选项的描述)。在shell开始执行脚本后设置extdebug,或者在extdebug没有被设置时引用这个变量,可能导致不一致的值。

BASH_ARGV

一个数组变量,包含了当前bash执行调用栈中的所有参数。最后一个子程序调用的最后一个参数在堆栈的顶部;最初调用的第一个参数在底部。当一个子程序被执行时, 所提供的参数会被推到BASH_ARGV上。shell只有在扩展调试模式下才会设置BASH_ARGV (参见2 Shopt 内置程序关于shopt Builtin的extdebug选项的描述)。在shell开始执行脚本后设置extdebug,或者在extdebug没有设置时引用这个变量,可能导致数值不一致。

BASH_ARGV0

当被引用时,这个变量扩展为shell或shell脚本的名称(与$0相同;参见2 特殊参数,关于特殊参数0的描述)。 对BASH_ARGV0的赋值会导致所赋值也被赋给$0。 如果BASH_ARGV0未被设置,它将失去其特殊属性,即使它随后被重置。

BASH_CMDS

一个关联数组变量,其成员对应于由hash内置程序维护的内部命令哈希表(见4.1 Bourne Shell内置程序)。 添加到该数组的元素会出现在哈希表中;但是,目前取消数组元素并不会导致命令名称从哈希表中删除。 如果BASH_CMDS被取消设置,它将失去其特殊属性,即使随后被重置也一样。

BASH_COMMAND

目前正在执行或即将执行的命令,除非shell正在执行一条作为陷阱结果的命令,在这种情况下,它是陷阱发生时正在执行的命令。 如果BASH_COMMAND没有被设置,它将失去其特殊属性,即使它随后被重置。

BASH_COMPAT

该值用于设置shell的兼容性级别。 参见6.12 shell的兼容模式,以了解各种兼容性级别及其影响。 该值可以是一个十进制数字(例如,4.2)或一个整数(例如,42),对应于所需的兼容性级别。如果BASH_COMPAT没有设置或设置为空字符串,兼容性级别将被设置为当前版本的默认值。 如果BASH_COMPAT被设置为一个不是有效的兼容性级别的值,shell将打印一个错误信息并将兼容性级别设置为当前版本的默认值。有效的值对应于下面描述的兼容性级别(见6.12 shell的兼容模式)。 例如,4.2和42是有效的值,对应于compat42shopt选项,并将兼容性级别设置为42。 当前版本也是一个有效的值。

BASH_ENV

如果在调用Bash执行一个shell脚本时设置了这个变量, 它的值会被扩展并作为执行脚本前要读取的启动文件的名称。参见6.2 Bash的启动文件

BASH_EXECUTION_STRING

-c 调用选项的命令参数。

BASH_LINENO

一个数组变量,其成员是源文件中的行号,其中FUNCNAME的每个对应成员都被调用。${BASH_LINENO[$i]}是源文件中的行号(${BASH_SOURCE[$i+1]}),其中${FUNCNAME[$i]}被调用(或者${BASH_LINENO[$i-1]}如果在另一个shell函数中被引用)。使用LINENO来获得当前的行号。

BASH_LOADABLES_PATH

一个用冒号分隔的目录列表,shell在其中寻找由enable命令指定的可动态加载的内置程序。

BASH_REMATCH

一个数组变量,其成员由‘=~’二进制运算符分配给[[条件命令(见5.2 条件性结构)。 索引为0的元素是字符串中与整个正则表达式匹配的部分。 索引为n的元素是字符串中与n第1个括号内的子表达式相匹配的部分。

BASH_SOURCE

一个数组变量,其成员是在FUNCNAME数组变量中定义了相应的shell函数名称的源文件名。 shell函数${FUNCNAME[$i]}是在文件${BASH_SOURCE[$i]}中定义的,并从${BASH_SOURCE[$i+1]}中调用。

BASH_SUBSHELL

当shell开始在每个子shell环境中执行时,在每个子shell环境中增加1。 初始值是0。如果BASH_SUBSHELL没有被设置,它将失去其特殊的属性,即使它随后被重置。

BASH_VERSINFO

一个只读的数组变量(见6.7 数组),其成员持有Bash的这个实例的版本信息。 分配给数组成员的值如下:。

BASH_VERSINFO[0]

主要版本号(即release)。

BASH_VERSINFO[1]

次要版本号(即version)。

BASH_VERSINFO[2]

补丁的级别。

BASH_VERSINFO[3]

构建的版本。

BASH_VERSINFO[4]

发布状态(例如,beta1)。

BASH_VERSINFO[5]

值为MACHTYPE

BASH_VERSION

当前Bash实例的版本号。

BASH_XTRACEFD

如果设置为与有效文件描述符相对应的整数,Bash将把‘set -x’启用时产生的跟踪输出写入该文件描述符。 这允许跟踪输出与诊断和错误信息分开。当BASH_XTRACEFD被取消设置或被赋予新的值时,文件描述符将被关闭。 取消设置BASH_XTRACEFD或将其赋予空字符串会导致跟踪输出被发送到标准错误。 注意,将BASH_XTRACEFD设置为2(标准错误文件描述符)然后取消设置将导致标准错误被关闭。

CHILD_MAX

设置退出的子状态值的数量,让shell记住。 Bash不允许这个值减少到低于POSIX规定的最小值,而且有一个最大值(目前是8192),这个值不能超过。 最小值是由系统决定的。

COLUMNS

当打印选择列表时,select命令用来确定终端宽度。 如果checkwinsize选项被启用,则自动设置(见2 Shopt 内置程序),或者在交互式shell中收到SIGWINCH时,自动设置。

COMP_CWORD

包含当前光标位置的字在${COMP_WORDS}中的索引。 这个变量只在由可编程完成设施调用的shell函数中可用(见可编程完成)。

COMP_LINE

当前的命令行。 这个变量只在shell函数和由可编程完成工具调用的外部命令中可用(见可编程完成)。

COMP_POINT

当前光标位置相对于当前命令开头的索引。 如果当前光标位置在当前命令的末尾,这个变量的值等于${#COMP_LINE}。 这个变量只在shell函数和由可编程完成工具调用的外部命令中可用(见可编程完成)。

COMP_TYPE

设为一个整数值,对应于导致调用完成函数的完成类型:TAB,用于正常完成,‘?’,用于列出连续选项卡后的完成,‘!’,用于列出部分单词完成时的替代方案,‘@’,用于在单词没有被修改的情况下列出完成,或者‘%’,用于菜单完成。 这个变量只在shell函数和由可编程完成工具调用的外部命令中可用(见8.6 可编程完成)。

COMP_KEY

用于调用当前完成功能的键(或键序列的最后一个键)。

COMP_WORDBREAKS

Readline库在执行单词补全时被视为单词分隔符的字符集。 如果COMP_WORDBREAKS未被设置,它将失去其特殊属性,即使随后被重置也是如此。

COMP_WORDS

由当前命令行中的各个单词组成的数组变量。 该行被拆分为单词,就像 Readline 将其拆分一样,如上所述,使用COMP_WORDBREAKS。 此变量仅在由可编程完成工具调用的 shell 函数中可用(见可编程完成)。

COMPREPLY

一个数组变量,Bash从中读取由可编程完成工具(见8.6 可编程完成)调用的shell函数所产生的可能的完成。 每个数组元素都包含一个可能的完成。

COPROC

一个数组变量,用来保存一个未命名的协处理的输出和输入的文件描述符(见协处理)。

DIRSTACK

一个数组变量,包含了目录栈的当前内容。 目录在栈中出现的顺序是由dirs内置程序显示的。 对这个数组变量的赋值可以用来修改已经在栈中的目录,但pushdpopd内置程序必须用来添加和删除目录。 对这个变量的赋值不会改变当前目录。 如果DIRSTACK没有被设置,它将失去其特殊属性,即使它随后被重置了。

EMACS

如果Bash在环境中发现这个变量,当shell以‘t’开始时,它就会假定shell是在Emacs shell缓冲区中运行的,并禁用行编辑。

ENV

当在POSIX模式(见6.11 Bash的POSIX模式)下调用交互式shell时,与BASH_ENV类似地展开和执行(见6.2 Bash的启动文件)。

EPOCHREALTIME

每次引用这个参数时,它都会扩展为自Unix Epoch以来的秒数,是一个微秒级的浮点值(关于Epoch的定义,请参见C库函数time的文档)。 对EPOCHREALTIME的赋值被忽略。 如果EPOCHREALTIME没有被设置,它将失去其特殊属性,即使它随后被重置了。

EPOCHSECONDS

每次引用这个参数时,它都会扩展为自Unix Epoch以来的秒数(关于Epoch的定义,请参见C库函数time的文档)。 对EPOCHSECONDS的赋值被忽略。 如果EPOCHSECONDS未被设置,它将失去其特殊属性,即使它随后被重置了。

EUID

当前用户的数字式有效用户ID。这个变量是只读的。

EXECIGNORE

以冒号分隔的shell模式列表(见8.1 模式匹配),定义了使用PATH进行命令搜索时要忽略的文件名列表。 就完成和通过PATH查询执行命令而言,全路径名符合这些模式之一的文件不被视为可执行文件。这并不影响[test[[命令的行为。 命令哈希表中的全路径名不受EXECIGNORE的影响。 使用这个变量可以忽略那些设置了可执行位但不是可执行文件的共享库文件。 模式匹配尊重extglob shell选项的设置。

FCEDIT

fc内置命令的-e选项所使用的默认编辑器。

FIGNORE

一个以冒号分隔的后缀列表,在执行文件名补全时将被忽略。 后缀与FIGNORE中的条目之一相匹配的文件名将从匹配的文件名列表中排除。一个示例值是‘.o:~

FUNCNAME

一个数组变量,包含了当前在执行调用栈中的所有shell函数的名称。 索引为0的元素是任何当前执行的shell函数的名称。 最下面的元素(索引最高的)是"main"。 这个变量只在shell函数执行时存在。 对FUNCNAME的赋值没有影响。 如果FUNCNAME没有被设置,它将失去其特殊属性,即使它随后被重置了。

这个变量可以与BASH_LINENOBASH_SOURCE一起使用。 FUNCNAME的每个元素在BASH_LINENOBASH_SOURCE中都有相应的元素来描述调用堆栈。 例如,${FUNCNAME[$i]}是从文件${BASH_SOURCE[$i+1]}的行号${BASH_LINENO[$i]}处调用的。 caller内置程序使用这些信息来显示当前的调用堆栈。

FUNCNEST

如果设置为大于0的数值,定义了一个最大的函数嵌套级别。超过这个嵌套级别的函数调用将导致当前命令中止。

GLOBIGNORE

一个以冒号分隔的模式列表,定义了文件名扩展要忽略的文件名集合。 如果一个文件名被文件名扩展模式匹配,同时也匹配GLOBIGNORE中的一个模式,它就会从匹配列表中删除。 模式匹配尊重extglob shell选项的设置。

GROUPS

一个数组变量,包含了当前用户是成员的组的列表。 对GROUPS的赋值没有影响。 如果GROUPS没有被设置,它将失去其特殊的属性,即使它随后被重置。

histchars

最多三个控制历史扩展、快速替换和标记化的字符(见9.3 历史扩展)。 第一个字符是历史扩展字符,即表示历史扩展开始的字符,通常是‘!’。第二个字符是表示‘快速替换’的字符,当它作为一行的第一个字符时,通常是‘^’。可选的第三个字符是当发现作为一个词的第一个字符时,表示该行的剩余部分是一个注释,通常是‘#’。历史注释字符会使该行的剩余字数跳过历史替换。它不一定导致shell解析器将该行的其余部分视为注释。

HISTCMD

当前命令的历史编号,或在历史列表中的索引。 对HISTCMD的分配被忽略。 如果HISTCMD未被设置,它将失去其特殊属性,即使它随后被重置。

HISTCONTROL

一个以冒号分隔的数值列表,控制命令在历史列表中的保存方式。 如果数值列表中包括‘ignorespace’,则以空格字符开始的行不会保存在历史列表中。值为‘ignoredups’会导致与前一个历史条目相匹配的行不被保存。 值为‘ignoreboth’是‘ignorespace’和‘ignoredups’的缩写。值为‘erasedups’会使所有与当前行相匹配的前几行在该行被保存之前从历史列表中删除。 任何不在上述列表中的值都会被忽略。 如果HISTCONTROL没有被设置,或者不包括一个有效的值,所有由shell解析器读取的行都会被保存在历史列表中,但要受到HISTIGNORE值的限制。 一个多行复合命令的第二行和后续行不会被测试,无论HISTCONTROL的值是多少,都会被加入历史。

HISTFILE

保存命令历史的文件名。默认值是~/.bash_history

HISTFILESIZE

历史文件中包含的最大行数。 当这个变量被赋值时,如果有必要,历史文件会被截断,通过删除最老的条目,使其不超过这个行数。 当shell退出时,历史文件也会被截断到这个大小。 如果值为0,历史文件会被截断到零大小。 非数字值和小于零的数字值会抑制截断。 shell在读取任何启动文件后会将默认值设置为HISTSIZE的值。

HISTIGNORE

一个用冒号分隔的模式列表,用于决定哪些命令行应该保存在历史列表中。每个模式都被固定在行的开头,并且必须与整个行相匹配(没有隐含的‘*’被附加)。在应用了HISTCONTROL指定的检查后,每个模式都针对该行进行测试。除了正常的shell模式匹配字符外,‘&’匹配前一个历史行。‘&’可以用反斜杠转义;在尝试匹配前,反斜杠会被删除。多行复合命令的第二行和后续行不被测试,无论HISTIGNORE的值是多少,都会被添加到历史记录中。 模式匹配会尊重extglob shell选项的设置。

HISTIGNORE包含了HISTCONTROL的功能。一个‘&’的模式与ignoredups相同,而一个‘[]*’的模式与ignorespace相同。将这两个模式结合起来,用冒号隔开,就可以实现ignoreboth的功能。

HISTSIZE

记忆在历史列表中的最大命令数。 如果数值为0,命令不会被保存在历史列表中。 小于0的数值会导致每条命令都被保存在历史列表中(没有限制)。 shell在读取任何启动文件后会将默认值设为500。

HISTTIMEFORMAT

如果这个变量被设置且不为空,它的值将作为strftime的格式字符串,用于打印与history内置程序显示的每个历史条目相关的时间戳。 如果这个变量被设置,时间戳将被写入历史文件,以便它们可以跨Shell会话保存。 这将使用历史注释字符来区分时间戳和其他历史行。

HOSTFILE

包含一个与/etc/hosts相同格式的文件名,当shell需要完成一个主机名时,应该读取这个文件。 可能的主机名完成列表可能在shell运行时被改变;当值被改变后,下次尝试完成主机名时,Bash会将新文件的内容添加到现有列表中。如果HOSTFILE被设置,但是没有值,或者没有命名一个可读的文件,Bash会尝试读取/etc/hosts来获得可能的主机名完成列表。 当HOSTFILE未被设置时,主机名列表被清除。

HOSTNAME

当前主机的名称。

HOSTTYPE

描述Bash正在运行的机器的一个字符串。

IGNOREEOF

控制shell在收到一个EOF字符作为唯一输入时的动作。如果设置了这个值,则表示在shell退出之前,作为输入行的第一个字符的连续EOF字符的数量。如果该变量存在但没有数值,或者没有数值,那么默认值是10。 如果该变量不存在,那么EOF表示对shell的输入结束。这只对交互式shell有效。

INPUTRC

Readline初始化文件的名称,覆盖默认的~/.inputrc

INSIDE_EMACS

如果Bash在shell启动时在环境中发现了这个变量,它就会假定shell是在Emacs shell缓冲区中运行的,并且可能会根据TERM的值来禁用行编辑。

LANG

用于确定任何没有特别选择以LC_开头的变量的类别的地区性类别。

LC_ALL

这个变量覆盖了LANG的值和任何其他指定区域类别的LC_变量。

LC_COLLATE

这个变量决定了在对文件名扩展的结果进行排序时使用的整理顺序,并决定了范围表达式、等价类以及文件名扩展和模式匹配中的整理顺序的行为(见8 文件名扩展)。

LC_CTYPE

这个变量决定了字符的解释和字符类在文件名扩展和模式匹配中的行为(见8 文件名扩展)。

LC_MESSAGES

这个变量决定了用于翻译前面有‘$’的双引号字符串的地区设置(见特定地区翻译)。

LC_NUMERIC

这个变量决定了用于数字格式化的地区类别。

LC_TIME

这个变量决定了用于数据和时间格式化的locale类别。

LINENO

当前正在执行的脚本或shell函数中的行号。 如果LINENO没有被设置,它就会失去其特殊的属性,即使随后被重置。

LINES

select命令决定打印选择列表的列长。 如果checkwinsize选项被启用,则自动设置(见2 Shopt 内置程序),或者在交互式shell中收到SIGWINCH时自动设置。

MACHTYPE

一个完全描述Bash正在执行的系统类型的字符串,以标准的GNU cpu-company-system格式。

MAILCHECK

shell应该多久检查一次MAILPATHMAIL变量中指定的文件中的邮件(以秒为单位)。 默认是60秒。如果这个变量没有被设置,或者被设置为一个不大于或等于0的数值,shell将禁用邮件检查。

MAPFILE

当没有提供变量名时,创建一个数组变量来保存由mapfile内置程序读取的文本。

OLDPWD

前一个工作目录,由cd内建程序设置。

OPTERR

如果设置为1,Bash就会显示由getopts内置命令产生的错误信息。

OSTYPE

一个描述Bash所运行的操作系统的字符串。

PIPESTATUS

一个数组变量(见6.7 数组),包含最近执行的前台管道(可能只包含一条命令)中的进程退出状态值的列表。

POSIXLY_CORRECT

如果Bash启动时这个变量在环境中,那么在读取启动文件之前,Shell会进入POSIX模式(见6.11 Bash的POSIX模式),就像提供了--posix调用选项一样。 如果它在Shell运行时被设置,Bash会启用POSIX模式,就像命令一样

set -o posix

当shell进入POSIX模式时,如果这个变量还没有被设置,它就会设置这个变量。

PPID

shell的父进程的进程ID。这个变量是只读的。

PROMPT_COMMAND

如果这个变量被设置,并且是一个数组,那么在打印主提示符($PS1)之前,每个设置元素的值都被解释为要执行的命令。 如果这个变量被设置,但不是一个数组变量,那么它的值将被用作要执行的命令。

PROMPT_DIRTRIM

如果设置为大于0的数字,该值将作为扩展\w\W提示字符串转义时要保留的尾部目录组件的数量(见6.9 控制提示符)。 删除的字符将用省略号替换。

PS0

这个参数的值会像PS1一样展开,在读取命令后和执行命令前由交互式shell显示。

PS3

这个变量的值被用来作为select命令的提示。如果没有设置这个变量,select命令的提示语是‘#?

PS4

这个参数的值像PS1一样被扩展,扩展后的值是在设置-x选项时(见1 Set 内置程序),在必要时,扩展后的值的第一个字符会被复制多次,以表示多层次的指令。 默认值是‘+’。

PWD

当前的工作目录,由cd内置程序设置。

RANDOM

每次引用这个参数时,它都会扩展为一个0到32767之间的随机整数。如果RANDOM没有被设置,它就会失去它的特殊属性,即使它随后被重置。

READLINE_ARGUMENT

给予Readline命令的任何数字参数,该命令在调用时使用‘bind -x’(见4.2 Bash的内置命令)进行了定义。

READLINE_LINE

Readline行缓冲区的内容,用于‘bind -x’(见4.2 Bash的内置命令)。

READLINE_MARK

mark(保存的插入点)在Readline行缓冲区中的位置,用于‘bind -x’(见4.2 Bash的内置命令)。 插入点和标记之间的字符通常被称为region

READLINE_POINT

插入点在Readline行缓冲区中的位置,用于‘bind -x’(见4.2 Bash的内置命令)。

REPLY

read内置程序的默认变量。

SECONDS

这个变量扩展为shell启动后的秒数。对这个变量的赋值将计数重置为赋值,扩展后的值成为赋值加上赋值后的秒数。 shell调用时的秒数和当前时间总是通过查询系统时钟来确定。 如果SECONDS没有被设置,它将失去其特殊属性,即使它随后被重置。

SHELL

这个环境变量扩展为shell的完整路径名。 如果在shell启动时没有设置,Bash就会将当前用户登录shell的完整路径名分配给它。

SHELLOPTS

一个用冒号分隔的启用的shell选项的列表。列表中的每个词都是set内置命令的-o选项的有效参数(见1 Set 内置程序)。 SHELLOPTS 中出现的选项是由’set -o’报告为‘on’的选项。 如果Bash启动时环境中存在这个变量,在读取任何启动文件之前,列表中的每个shell选项将被启用。这个变量是只读的。

SHLVL

每次启动一个新的Bash实例时,都会递增一个。这是对Bash shell嵌套程度的统计。

SRANDOM

这个变量每次被引用都会扩展为一个32位的伪随机数。在支持/dev/urandomarc4random的系统上,随机数发生器不是线性的,所以每个返回的数字与前面的数字没有关系。无法为随机数生成器设定种子,所以对这个变量的赋值没有影响。 如果SRANDOM没有被设置,它将失去其特殊属性,即使它随后被重置。

TIMEFORMAT

该参数的值用作格式字符串,指定如何显示以time保留字为前缀的管道的时间信息。 ‘%’字符引入了一个转义序列,该序列被扩展为一个时间值或其他信息。 转义序列及其含义如下;大括号表示可选部分。

%%

一个字面意义上的‘%’。

%[p][l]R

经过的时间,以秒为单位。

%[p][l]U

在用户模式下花费的CPU秒数。

%[p][l]S

在系统模式下花费的CPU秒数。

%P

CPU的百分比,计算为(%U+%S)/ %R。

可选的p是指定精度的数字,即小数点后的小数位数。 值为0会导致不输出小数点或小数。 最多可以指定小数点后的三个位置;p大于3的值会改为3。如果没有指定p,会使用值3。

可选的l指定更长的格式,包括分钟,形式为MMmSS.FFs。p的值决定是否包括分数。

如果这个变量没有被设置,Bash的行为就像它有一个值一样

$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'

如果该值为空,则不显示任何计时信息。 在显示格式字符串时,会添加一个尾部的新行。

TMOUT

如果设置为大于0的值,TMOUT将被视为read内置程序(见4.2 Bash的内置命令)的默认超时。 如果输入来自终端,select命令(见5.2 条件性结构)在TMOUT秒后仍未到达,则终止该输入。

在一个交互式的shell中,该值被解释为在发出主提示后等待一行输入的秒数。 如果没有完整的输入行,Bash在等待该秒数后终止。

TMPDIR

如果设置了,Bash会使用它的值作为一个目录的名称,在这个目录中Bash为shell使用而创建临时文件。

UID

当前用户的数字真实用户ID。这个变量是只读的。

最后更新2023-03-17
0 个评论
下一篇: 6 Bash功能
当前页面书签