Linux bash中的变量分类:全局变量、环境变量和本地变量
本文目录导读:1、 全局变量2、 环境变量3、 本地变量在Linux bash中,我们经常会使用各种类型的变量来存储数据或者传递参数。这些变量可以分为三类:全局变量、环境变量和本地变量。了解这些不同类型的变量及其用途对于编写高效且可维护的脚本非常重要。1. 全局变量全局变量是在整个bash进程中都可见并且可以被访问到的。它们通常被定义……
在Linux bash中,我们经常会使用各种类型的变量来存储数据或者传递参数。这些变量可以分为三类:全局变量、环境变量和本地变量。了解这些不同类型的变量及其用途对于编写高效且可维护的脚本非常重要。
1. 全局变量
全局变量是在整个bash进程中都可见并且可以被访问到的。它们通常被定义在脚本文件或者用户配置文件(如.bashrc)中,并且可以通过export命令将它们导出成为环境变数。例如:
“`
#!/bin/bash
my_var=”Hello World!”
export my_var
以上代码定义了一个名为my_var的全局字符串型(string) 变数,并将其导出成为一个环境字符串型(string) 变数。
当我们运行以上脚本时,我们可以使用echo命令来输出该全局字符串型(string) 变数:
$ source script.sh
$ echo $my_var
Hello World!
需要注意,只有当我们以source命令运行该脚本时才能够让该全局字符串型(string) 变数生效。如果直接执行script.sh,则无法读取到该全局字符串型(string) 变数。
2. 环境变量
环境变量是可以被所有进程访问的全局变量。它们通常包含有关系统配置和用户环境的信息,如PATH、USER、HOME等。我们可以通过export命令将一个全局变量导出成为环境变数:
my_env_var=”Hello World!”
export my_env_var
![Linux bash中的变量分类:全局变量、环境变量和本地变量缩略图 Linux bash中的变量分类:全局变量、环境变量和本地变量](https://www.72715.net/wp-content/uploads/2023/05/f28cf8b6e2b4cb6a69515751158eb438.png)
以上代码定义了一个名为my_env_var的全局字符串型(string) 变数,并将其导出成为一个环境字符串型(string) 变数。
当我们运行以上脚本时,我们可以使用echo命令来输出该环境字符串型(string) 变数:
$ echo $my_env_var
需要注意,与全局变量不同,导出成为环境变数的全局字符串型(string) 变数无需以source命令运行才能够生效。在当前bash会话中直接执行script.sh即可读取到该环境字符串型(string) 变数。
3. 本地变量
本地变量只在当前函数或者代码块中可见,并且不会被传递给子进程或者其他函数。当函数执行完毕后,这些本地变量就会被销毁。例如:
function my_function {
local my_local_var=”Hello World!”
echo $my_local_var
}
echo $my_local_var
以上代码定义了一个名为my_function的函数,其中包含了一个本地字符串型(string) 变数my_local_var,并输出该变数。在主程序中,我们尝试输出该变数,但会得到以下错误:
script.sh: line 6: my_local_var: unbound variable
因为my_local_var是一个本地字符串型(string) 变数,在主程序中是不可见的。
在Linux bash中,全局变量、环境变量和本地变量有着不同的作用和使用场景。全局变量可以被整个bash进程访问到;环境变量可以被所有进程访问到;而本地变量只在当前函数或者代码块中可见。了解这些不同类型的变量及其用途对于编写高效且可维护的脚本非常重要。
最后再强调一下:当你需要导出一个全局字符串型(string) 变数成为环境字符串型(string) 变数时,请确保以export命令进行导出!否则它将只是普通的全局字符串型(string) 变数。