我有以下bash腳本。從bash腳本中將變量重新導出到環境
export KEY=A
run_command_that_uses_KEY
...
export KEY=B
run_command_that_uses_KEY
出口出口的變量賦值子殼,即炮彈被啓動含出口指令殼的子進程。命令行環境是腳本外殼的父級,因此它沒有看到變量賦值。我如何強制父shell導出正確的密鑰?我可以在bash腳本本身或其他東西中獲取bash腳本嗎?
我有以下bash腳本。從bash腳本中將變量重新導出到環境
export KEY=A
run_command_that_uses_KEY
...
export KEY=B
run_command_that_uses_KEY
出口出口的變量賦值子殼,即炮彈被啓動含出口指令殼的子進程。命令行環境是腳本外殼的父級,因此它沒有看到變量賦值。我如何強制父shell導出正確的密鑰?我可以在bash腳本本身或其他東西中獲取bash腳本嗎?
這並不是您的變量未被導出的問題。你可以平凡驗證這正常工作從bash
側:
export KEY=A
bash -c 'echo $KEY'
export KEY=B
bash -c 'echo $KEY'
的問題,你的情況更可能是你的程序是單個實例。
如果您使用firefox
或gedit
來嘗試上述操作,您會發現變量首次運行,但不是第二次運行。
這是因爲第一次,程序從頭開始,而第二次,它只是發送一個消息來打開一個新窗口的舊過程。
在再次調用之前,您可以嘗試查殺與該任務相關的所有進程。
就是這樣,'run_command_that_uses_KEY'仍然得到B,但是env'KEY'是B,在之前將它殺死並且工作正常。 –
當你看到「我如何強制父殼......」時,你似乎正在急轉彎。你想做什麼? –
第二個'run_command_that_uses_KEY'仍然得到A而不是B. –
你確定這是發生了什麼?它應該得到B.事實上,你只需要第一次使用'export';在那之後,shell知道它已經被導出,並且更改將被導出。 –