您可以为单个命令设置变量,如下所示:
MY_VARIABLE=my_value ./my_script.sh
你可以交给另一个这样的脚本:
exec ./my_script.sh
但是,当我尝试这样做时:
exec MY_VARIABLE=my_value ./my_script.sh
我收到一个错误:
exec: MY_VARIABLE=my_value: not found
这是为什么? 有没有办法做到这一点?
您需要使用env
来指定环境变量:
exec env MY_VARIABLE=my_value ./my_script.sh
如果希望脚本以空环境或仅使用指定变量开头,请使用-i
选项。
来自man env
:
env - run a program in a modified environment
在bash中,您可以通过将赋值放在命令的开头来为命令设置环境变量。对于exec
,这和其他命令一样,所以你写:
MYVARIABLE=my_value exec ./my_script.sh