美文网首页
bash变量有多少种?

bash变量有多少种?

作者: 雨景江水 | 来源:发表于2023-08-11 22:11 被阅读0次

讲环境变量的另外几个好的视频:
https://www.bilibili.com/video/BV1pZ4y1N7pr?p=2
该视频的笔记连接:https://www.freecplus.net/ebfb46a0f8014f59a16c78ec8de73468.html

零.

  1. 定义的变量方式只有两种语法:
    a=111

    export a=11111

如果是写在配置文件里面的变量,注意:写在配置文件里面的变量都是用export定义的,如果不带export,那么只能在配置文件里面使用,外面用不了

  1. a=111 这种方式定义的变量,当前进程中有效,其他进程及当前进程的子进程无效
    也就是说,切换了用户、当前子shell(比如shell脚本)、切换窗口(一个窗口就是一个shell进程)等都看不到这个变量

3.export a=11111 这种方式定义的变量,同一个shell窗口下的同一个用户才可以看到,别的用户看不到的(你登录别的用户相当于退出当前用户进程了,进入到另外的进程了),子shell(也就是当前窗口运行的shell脚本,这个是子进程) 也可以看到

注1:重新打开一个shell窗口,相当于又用root用户登录了一遍Linux服务器

另外的窗口,不管什么用户,都看不到

注2:之前的测试有问题, su - 这个命令才是登录其他用户并且使用了该用户的环境变量

一.
用户自定义变量(本地变量):当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效
注1:切换用户在回来,这个变量就没了
注2:export定义的变量,关闭了窗口 或者 退出当前用户 才会消失

一般自己定义的变量都是本地变量

定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115
引用变量: 变 量 名 或 {变量名}
查看变量:echo $变量名 set(所有变量:包括自定义变量和环境变量)
取消变量:unset 变量名
作用范围:仅在当前Shell中有效

注1:什么叫做当前Shell? 答:一个窗口就是一个shell,不同的窗口是不同的shell,可以理解为一个shell进程
ps -aux|grep bash : 每新增一个窗口,就会有一个bash进程出现
bin/bash这个进程默认就是有两个的

比如:
在当前窗口创建了变量a ,任何一个shell文件是调用不到变量a的,因为shell文件用的是当前窗口的子进程

二.局部环境变量
局部环境变量 :当前进程有效,并且能够被子进程调用(在所有子shell里面都可以调用)

局部环境变量是针对某个用户的某个窗口的:
1.同一个用户不同窗口:
①这个是有共同的环境变量的,这种是在配置文件里面,可以用env查看,你会发现不同窗口 或者 不同的用户 或者 不同窗口的不同用户 ,他们有些环境变量是一样的
②同一个窗口下,用export定义的局部环境变量,别的用户是看不到的
一个用户在一个窗口下用export创建的局部环境变量,在另外的窗口,用同一个用户登录,是看不到的
③export创建的变量,关闭掉窗口就没有了

2.不同用户之间的环境变量不可以互相调用,这个排除掉全局环境变量和一些共同都有的环境变量

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin : 系统查找命令的路径

env查看当前用户可以看到(可以看到就可以调用)的环境变量,全局环境变量 和 本地变量 是不打印出来的(这个可以用set看)
set命令查询当前用户的所有变量(临时变量与环境变量)

定义局部环境变量的方法:
export 变量名=变量值 ;
或者 declare -x 变量名=变量值

还可以先定义一个本地变量:a=111
export a    #把本地变量变成了环境变量
注意:这种定义的环境变量也是临时的,关闭掉窗口就没有了,要永久的,就必须写入到配置文件里面去

比如:
创建一个变量a=110 , 执行export a ,把a设置成当前的环境变量,
那么,在当前窗口运行的shell文件都能够调用到这个a变量

每个用户家目录下都有的配置文件,读取后都是用户的环境变量:
文件名 说明 备注
~/.bashrc 当前用户的bash信息,用户登录时读取 定义别名、umask、函数等

~/.bash_profile 当前用户的环境变量信息,用户登录时读取

~/.bash_logout 当前用户退出当前shell时最后读取 定义用户退出时执行的程序等

~/.bash_history 当前用户的历史命令 history -w保存历史记录 history -c清空历史记录

三.全局环境变量
全局环境变量 : 所有的用户和程序都能调用,且继承,新建的用户也默认能调用.

文件名 说明 备注
~/.bashrc 当前用户的bash信息,用户登录时读取 局部。定义别名、umask、函数等

~/.bash_profile 当前用户的环境变量信息,用户登录时读取 局部。

~/.bash_logout 当前用户退出当前shell时最后读取 局部。定义用户退出时执行的程序等

~/.bash_history 当前用户的历史命令 局部。history -w保存历史记录 history -c清空历史记录

/etc/bashrc 全局的bash信息 全局。所有用户都生效

/etc/profile 全局环境变量信息 全局。系统和所有用户都生效

说明:以上文件修改后,都需要重新source让其生效或者退出重新登录。

注意1:/etc/bashrc 和 /etc/profile 这两个文件不建议乱动

用户登录系统读取相关文件的顺序

/etc/profile

$HOME/.bash_profile

$HOME/.bashrc

/etc/bashrc

$HOME/.bash_logout

说明:本地变量、局部环境变量、全局环境变量是根据变量的作用域来区分的。

四.系统变量
系统变量(内置bash中变量) : shell本身已经固定好了它的名字和作用.

常用的:
$? 上一条命令执行后返回的状态码
当前所在进程的进程号,如echo

内置变量 含义
$? 上一条命令执行后返回的状态码;状态码值为0表示执行正常,非0表示执行异常或错误
状态值为0表示执行正常:就是能够正常执行完命令

注1:上一条命令 指的不仅仅是类似于 ls 等这种简单的命令,还可以是:
[ 1 -lt 2 ] && [ 2 -lt 3 ] 这种复合命令

0 当前执行的程序或脚本名# 脚本后面接的参数的个数
* 脚本后面所有参数,参数当成一个整体输出,每一个变量参数之间以空格隔开@ 脚本后面所有参数,参数是独立的,也是全部输出
1~9 脚本后面的位置参数,1表示第1个位置参数,依次类推{10}~{n} 扩展位置参数,第10个位置变量必须用{}大括号括起来(2位数字以上扩起来) $$ 当前所在进程的进程号,如echo $$! 后台运行的最后一个进程号 (当前终端)
!$ 调用最后一条命令历史中的参数

1.位置参数变量
进一步了解位置参数1~{n}

!/bin/bash

了解shell内置变量中的位置参数含义

1.sh 文件里面:
echo "$0 = 0" echo "\# = #" echo "\* = *" echo "\@ = @" echo "\1 = 1" echo "\2 = 2" echo "\3 = 3" echo "\11 = {11}" echo "\12 = ${12}"

执行1.sh文件

  1. 进一步了解*和@的区别
    *:表示将变量看成一个整体@:表示变量是独立的

!/bin/bash

for i in "@" do echoi
done

echo "======我是分割线======="

for i in "*" do echoi
done

[root@MissHou ~]# bash 3.sh a b c
a
b
c
======我是分割线=======
a b c

相关文章

  • Bash变量的类型

    Bash变量的类型通常理解shell变量是弱类型的,或者无类型的,其实Bash变量是有类型的。 Bash变量一共有...

  • Linux Shell变量

    BASH SHELL变量主要分为4种: 用户自定义变量、环境变量、位置变量、预定义变量。 本文主要介绍这4种变量:...

  • bash脚本编程-变量,变量类型

    bash变量类型: 环境变量,本地变量,位置变量,特殊变量。 本地变量: bash: VARNAME=value ...

  • Shell进阶脚本-内部变量

    内建变量 影响 Bash 脚本行为的变量 $BASH Bash程序的路径 $BASH_ENV 这个环境变量会指向一...

  • bash变量的作用域

    bash变量的作用域 bash有两类变量:全局变量和函数内变量 全局变量 定义在函数外面的函数就是全局变量。下面例...

  • bash脚本内部变量

    bash脚本内部变量 $BASH bash的程序文件的路径,如/bin/bash $BASH_ENV 该环境变量保...

  • Shell基础ideago精华版

    hello world #! /bin/bash 声明为bash执行 变量 bash的变量无需声明,可以直接使用,...

  • Shell-Bash变量与运算符

    1、Bash中变量定义的规则 说明: 变量名称,有字母,数字和下划线组成,但是不能以数字开头 在 Bash 中变量...

  • shell基础

    1,bash 自定义变量 变量替换之匹配截取: bash测试 bash判断 条件判断 if if代码返回0表示真,...

  • Shell Bash 的内部变量

    $BASH 变量 —— 用于引用 Bash 实例的全路径名。变量的值如下所示: $HOME 变量 —— 当前用户的...

网友评论

      本文标题:bash变量有多少种?

      本文链接:https://www.haomeiwen.com/subject/ralowktx.html