linux环境变量

▶ linux环境变量

▷ 环境变量

环境变量:存储有关shell会话和工作环境的信息,通过环境变量任何的程序或shell脚本中运行的脚本能够轻松的访问环境变量存储的值。

环境变量是一种存储持久数据的一种简便方法。

▷▷ 环境变量的分类

  • 全局变量:这种类型的变量在任何shell中都可见,父shell可见,子shell也可见。

  • 局部变量:只能在定义它们的进程中可以看见。

▷ 查看环境变量

▷▷ 查看全局环境变量-printenv-env

env 这个命令用于查看所有的全局环境变量。

printenv 既可以查看所有的全局变量同时也能查看指定的变量。

[root@server ~]# env
[root@server ~]# printenv
[root@server ~]# env >> test.txt
[root@server ~]# printenv >> test2.txt
[root@server ~]# diff test.txt test2.txt
33c33
< _=/usr/bin/env
---
> _=/usr/bin/printenv

可以看到这两个命令的输出基本上都是一样的

[root@server ~]# printenv HOME
/root

printenv 既可以查看所有的全局变量同时也能查看指定的变量,env 不行会失败 env: ‘HOME’: No such file or directory

▷▷ 局部环境变量-set

局部环境变量只能在定义它们的进程中看见。

[root@server ~]# set

set 命令不是专门输出局部环境变量的,专门看局部环境变量的命令是没有的,只能有set命令看某个特定进程设置的所有环境变量。

set 会输出 全局变量局部变量用户定义变量


▶ 设置环境变量

▷ 设置局部变量

在文本命令行界面直接输入 变量名=字面量值 就可以设置局部环境变量了。

[root@server ~]# my_var=good

[root@server ~]# echo $my_var
good

在shell中使用变量的方式就是在变量名前面加上 $ 符号。

值得一说的是在bash中变量的值默认都是字符串类型的,如 the_var=123 这里的 the_var 存储的 123 不是一个整型数组而是一个字符串。

系统之前定义的环境变量默认都是大写的如最常见的 PATH 或者说 HOME 这里变量,如果使用者用户自定定义的变量为了和系统中的变量做区分最好是全部都是小写,如之前定义的 my_varthe_var

由于上面的自定义的变量属于是局部变量所以在如果重新开启一个环境,这些自定义的局部环境变量就不能使用了。

▷ 设置全局变量

可以使用 export 命令后面跟上变量名就可以将这个局部变量改成全局变量了。

[root@server ~]# my_var=good

[root@server ~]# export my_var

[root@server ~]# bash
[root@server ~]# echo $my_var
good

在新的bash环境下,定义的 my_var 值是可以改变的,但这不会改变父shell中的值。

# 在 子shell 中
[root@server ~]# my_var=hello  # 修改 my_var 变量的值
[root@server ~]# echo $my_var
hello
[root@server ~]# exit  # 退出子shell返回父shell中
exit
[root@server ~]# echo $my_var
good

返回到父shell中,父shell的 my_var 的值没有被修改。

在子shell中使用 export 命令后,父shell中值依旧是无法被修改的,父shell依旧会保存原先的值。

▷ 删除环境变量

使用的命令是 unset 命令后面跟上变量名。

[root@server ~]# unset my_var
[root@server ~]# echo $my_var

当然如在shell中修改环境变量无法反馈到父shell中一样,在子shell中删除的环境变量在父shell中依旧是存在的。

▷ 使用与设置环境变量

在使用环境变量的时候前面要加上 $ 这个符号,而在设置如 exportunset 的时候就不需要跟上 $ 符号。

在全局变量中,在子shell修改操作不会反映在父shell上,在局部变量中只会在当前的shell中不会在后面的子shell中。

posted @ 2024-09-11 11:19  takenika  阅读(51)  评论(0)    收藏  举报