学习优先级:★★★★★ 易用性:★★★☆☆
在 Bash 脚本中,当脚本需要创建子进程(例如调用另一个脚本或命令)的时候,环境变量不会自动传递给子进程去供子进程引用。为了能使变量对子进程可用,可以使用 export 命令。这在复杂的自动化任务中尤其有用,因为它允许在脚本或进程之间共享一些参数和数据。
【 示例代码 】
以下示例展示了在未使用 export 时,变量对子进程不可用的情况。然后,通过使用 export 命令,使变量对子进程可用,并演示子进程如何访问该变量。
#!/bin/bash
# 定义一个变量
LOCAL_VAR="I am local"
# 尝试在子进程中访问该变量(这不会成功)
bash -c 'echo "Child process sees: $LOCAL_VAR"'
# 现在使用 export 命令导出变量
export GLOBAL_VAR="I am global"
# 在子进程中访问导出的变量(这会成功)
bash -c 'echo "Child process sees: $GLOBAL_VAR"'
【 执行结果 】
Child process sees:
Child process sees: I am global
在示例中,第一次调用 bash -c 的命令没有显示 LOCAL_VAR 的值,因为该变量未被导出。第二次调用 bash -c 的命令显示了 GLOBAL_VAR 的值,因为该变量被导出,从而使其对子进程可用。
补充说明
export 命令的作用是将变量标记为可导出给系统环境变量,使子进程能够在系统环境中引用该变量。环境变量在与系统交互的脚本中非常有用,例如定义可执行文件的路径或配置应用程序环境。export 命令在涉及多个脚本或进程的自动化工作流中至关重要,它确保数据能够在脚本和命令之间正确共享。同时,如果你自己在Linux系统中部署过应用的话,应该知道,比如用export 将刚部署完的应用(如java、maysql等)的运行路径添加到系统变量的PATH中,也可以在系统自启动的文件中使用如export PATH=$PATH:"java安装路径下的bin":"mysql安装目录下的bin":"nginx安装目录下的sbin"。