shell基础-bash变量-环境变量(图文详细)

1. 环境变量是什么

  • 用户自定义变量只在当前的shell中生效。而环境变量会在当前shell和这个shell的所有子shell当中有效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效

备注: 一部分变量由系统来定义的, 系统环境变量,这个变量名称是不变的,不能更改,一旦改了就失去作用了。只能修改它的值,作用固定的。有一部分是可以用户添加的, 环境变量可以手工添加自己定义的环境变量。设置环境变量

2. 设置环境变量

申明变量:
命令: export 变量名=变量值

查询变量
命令: env

删除变量
命令: unset 变量名

知识干货: 可以再当前界面下启动csh。也可以再当前的bash当中在启用一个bash。相当于在父shell下生成了一个子shell

开始实验:

  • (1) 在bash中在输入bash,然后在输入命令pstree(作用是确定进程数)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    知识干货: set 能看到所有的变量,包括本地变量,环境变量,系统预定义的变量。所以能看到刚才定义的环境变量和本地变量。那如果进入子shell当中,再用set查看,会发现,sex,age可以看到,但是name不能看到,**原因:姓名是本地变量,只在声明的shell当中生效。**而年龄和性别声明成了环境变量,不光在当前shell当中生效,这个shell当中的子shell都会生效。这是利用命令的方式来定义的。如果把这个变量写入了配置文件,会对所有的shell都会生效。
    (2) 用exit退出后,在用命令pstree进行查看
    在这里插入图片描述
    (3) env命令专门看环境变量的,系统自带的一些环境变量。
    在这里插入图片描述

3. 系统常见环境变量

PATH:系统查找命令的路径

  • 命令: echo \$PATH
    作用: 查看PATH

  • 命令: PATH="\$PATH":/root/sh
    作用:在PATH中添加新的变量。PATH变量叠加

  • 小提示: 在Linux当中我们的执行文件要想运行,不管是系统执行的命令还是自己写的脚本,要想执行都必须用路径,要么用绝对路径要不用相对路径。系统命令并没有写路径就可以执行,绝大数的Linux系统命令都是二进制的可执行文件,为什么不需要路径那?原因是PATH这个变量。 比如输入一个命令ls,系统就会在PATH中的路径依次去寻找这个命令,如果找到了就执行这个命令。没找到就会报错
    在这里插入图片描述

测试: 写一个helloworld 的shell脚本,然后把路径添加到了PATH环境变量中,直接输这个脚本名就可以直接执行这个脚本,而不是输入当前路径或者绝对路径来执行脚本了。

  • (1) 写一个非常简单的脚本
    在这里插入图片描述
    (2) 赋予脚本权限,把路径添加到PATH中,以变量叠加的方式写入path变量中。
    在这里插入图片描述
    在这里插入图片描述
    干货来了: Tab的补全其实也是靠path搜索的路径。这种用命令的方式也是临时生效,一旦重启就会消失,要想永久生效,就要写入对应的配置文件。

PS1:定义系统提示符的变量

  • \d:显示日期,格式为“星期 月 日”
    \h :显示简写主机名。如默认主机名“localhost”
    \t :显示24小时制时间,格式为“HH:MM :SS”
    \T:显示12小时制时间,格式为“HH:MM SS”
    \A : 显示24小时制时间,格式为“HH:MM”
    \u : 显示当前用户名
    \w : 显示当前所在目录的完整名称
    \W : 显示当前所在目录的最后一个目录
    # : 执行的第几个命令
    $ : 提示符。如果是root用户会希纳是提示符为“#”,如果是普通用户会显示提示符为“$”

  • 小提示: PS1没有在环境变量中,用env是看不到的,用set可以查看到。PS1虽然不是环境变量,他是系统预留专门用作定义系统操作环境一类变量。他是环境变量的一个子分支,用env看不到。

开始实验:

  • (1) 定义系统提示符的变量。下图中是当前登录用户,当前系统的主机名,当前所在的目录。#代表超级用户,$代表普通用户。
    在这里插入图片描述在这里插入图片描述
    (2) 在修改时要用单引号括起来
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46818279/article/details/107352260
今日推荐