无法从 shell 脚本更改环境变量值

not able to change environment variable value from shell script

我在 .zshrc 中导出了一个环境变量,我想从 /bin/script.sh

中的脚本更新它
#!/bin/sh
if [ $TOGGLE -eq 1 ]; then
echo a;
else 
echo b;
fi

TOGGLE=$((TOGGLE * -1));

但是在 运行 脚本之后 TOGGLE 的值在我 运行 脚本所在的会话中没有改变。 我怎样才能强制它改变

这是一个常见问题解答。环境变量是每个进程私有的,而不是全局的。您的脚本作为一个单独的进程运行,因此不能直接操作其父进程的环境变量。您可以 source 脚本,使其在当前 shell 进程中执行,而不是在子 shell 中执行。但是,这会对当前 shell.

的状态产生不必要的副作用