我有以下bash脚本。
export KEY=A
run_command_that_uses_KEY
...
export KEY=B
run_command_that_uses_KEY
export将变量赋值导出到子shell,即作为包含export指令的shell的子进程启动的shell。命令行环境是脚本shell的父级,因此它不会看到变量赋值。如何强制父shell导出正确的密钥?我可以在bash脚本本身或其他东西中获取bash脚本吗?
答案 0 :(得分:3)
这不是导出变量的问题。您可以从bash
方面轻松验证这是否正常:
export KEY=A
bash -c 'echo $KEY'
export KEY=B
bash -c 'echo $KEY'
您的案例中的问题更可能是您的程序是单个实例。
如果您使用firefox
或gedit
尝试上述操作,您会发现变量首次运行,但不是第二次运行。
这是因为第一次,程序从头开始,而第二次,它只是向旧进程发送一条消息以打开一个新窗口。
您可以尝试在再次调用任务之前杀死与该任务相关的所有进程。