unix – 在shell脚本中设置环境变量不会使其对shell可见

前端之家收集整理的这篇文章主要介绍了unix – 在shell脚本中设置环境变量不会使其对shell可见前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用一个shell脚本,我可以调用来设置一些环境变量。但是,在执行脚本后,我没有看到环境变量使用“printenv”在bash。

这里是我的脚本:

#!/bin/bash

echo "Hello!"
export MYVAR=boubou
echo "After setting MYVAR!"

当我做“./test.sh”时,我看到:

Hello!
After setting MYVAR!

当我做“printenv MYVAR”时,我什么都看不见。

你能告诉我我做错了什么吗?

这就是环境变量如何工作。每个进程都有一个环境副本。进程对其副本所做的任何更改都会传播到进程的子进程。但是,它们不会传播到进程的父进程。

解决这个问题的一种方法是使用source命令:

source ./test.sh

要么

. ./test.sh

(这两种形式是同义的)。

当你这样做,而不是在子shell中运行脚本,bash将执行脚本中的每个命令,就像在提示符下键入。

猜你在找的Bash相关文章