无法从 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.
的状态产生不必要的副作用
我在 .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.