shell变量(系统变量和环境变量)

系统变量

 表示方法                                        含义

$n                                               $1表示第一个参数,$2表示第二个参数

$0                                                当前程序的名称

$?                                                上一个命令或函数的返回码

$*                                                命令行中输入的全体参数列表的名单

$@                                              含义同$*,但是不适用IFS环境变量

$$                                                本程序的PID,(进程ID)号

$!                                                  上一个命令的PID


程序执行,可能有俩类返回值
    程序执行结果
    程序状态返回代码(0-255)
        0:正确执行
        1-255:错误执行 1,2,127 系统预留


例:

shell变量(系统变量和环境变量)_第1张图片

shell变量(系统变量和环境变量)_第2张图片


环境变量

shell环境变量是所有shell程序都会接收的参数,shell程序运行时,都会接收一组变量,这组变量就是环境变量

常见的环境有:

PATH                    shell命令的搜索命令,以冒号为分隔符,包含一系列路径名

HEME                   用户home的路径名,也是cd命令的默认参数

HISTFILE              命令历史文件

HISTSIZE             命令历史文件中最多包含的命令条数

SHELL                   SHELL的路径名,即linux当前正在使用的shell



使用env命令可以查看系统中所有环境变量的值

而在/etc/profile 文件中可以添加、修改系统的环境变量的值,这种修改方式对所有的用户都生效,而且是永久性的

修改文件保存后 ,若想要马上生效还需要运行下面的命令

source /etc/profile

否则只能在下次重新登录该用户时才生效

另外,也可以直接使用export在shell命令行下修改环境变量,但这只是对当前的shell(如bash)或其子shell有效

,并且修改使临时性的,shell关闭后变量就消失了,再打开新的shell时就没有这个变量

printenv:显示当前的环境变量
    PATH:使用冒号分割的路径(当我们执行命令的时候,它会按次序从PATH中寻找,找这个命令的可执行程序)
    (如果命令第一次执行时,回去寻找,但是以后不会,因为会有缓存,在内存之中把这个命令和对应的路径缓存下来
    有个命令叫做hash,使用这个命令可以看出命令的使用次数和命令路径,可以说是缓存)


取消变量的方法为使用“ unset  变量名称”例如取消myname的变量:

unset  myname



文件名通配:(globbing)
* 通配符(可以用于匹配任意长度(包括零长度)的任意字符)
? 任意单个字符
[] 匹配指定范围内的任意单个字符  ([abc]从abc选一个  [a-z] 所有小写字母 [0-9]数字
[a-zA-Z]  大写小写都包含)
[^]:匹配指定范围之外的任意单个字符
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母

bash支持的引号:
``:命令替换
"弱引用",可以实现变量替换
'' :强引用,不完成变量替换




你可能感兴趣的:(shell)