微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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将执行脚本中的每个命令,就像在提示符下键入。

原文地址:https://www.jb51.cc/bash/389409.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐