GDI*_*der 29 unix export environment-variables
我想使用一个shell脚本,我可以调用它来设置一些环境变量.但是,在执行脚本之后,我在bash中看不到使用"printenv"的环境变量.
这是我的脚本:
#!/bin/bash
echo "Hello!"
export MYVAR=boubou
echo "After setting MYVAR!"
Run Code Online (Sandbox Code Playgroud)
当我做"./test.sh"时,我看到:
Hello!
After setting MYVAR!
Run Code Online (Sandbox Code Playgroud)
当我做"printenv MYVAR"时,我什么也看不见.
你能告诉我我做错了什么吗?
NPE*_*NPE 51
这就是环境变量的工作原理.每个流程都有一份环境副本.进程对其副本所做的任何更改都会传播到进程的子进程.但是,它们不会传播到进程的父级.
解决此问题的一种方法是使用以下source命令:
source ./test.sh
Run Code Online (Sandbox Code Playgroud)
要么
. ./test.sh
Run Code Online (Sandbox Code Playgroud)
(这两种形式是同义词).
执行此操作时,将在脚本中bash执行每个命令,而不是在子shell中运行脚本,就像在提示符下键入它一样.