您可以为单个命令设置变量,如下所示:
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
为什么?
有没有办法做到这一点?
答案 0 :(得分:34)
您需要使用env
来指定环境变量:
exec env MY_VARIABLE=my_value ./my_script.sh
如果您希望脚本以空环境或仅使用指定变量开头,请使用-i
选项。
来自man env
:
env - run a program in a modified environment
答案 1 :(得分:6)
在bash中,您可以通过将赋值放在命令的开头来为命令设置环境变量。这与exec
的任何其他命令的工作方式相同,因此您可以编写:
MYVARIABLE=my_value exec ./my_script.sh