我可以通过运行命令行来分配 DISPLAY 变量:
export DISPLAY=:2
echo $DISPLAY (returns 2)
hostname (returns opt2)
在我的 #!/bin/bash 脚本中使用相同的命令:
echo $DISPLAY (returns 2)
export DISPLAY=:3
echo $DISPLAY (returns 3)
hostname (returns opt2)
但是,当我echo $DISPLAY
在脚本完成后执行此操作时,我仍然得到“2”作为 DISPLAY 变量;换句话说,脚本无法将 DISPLAY 变量从“2”重新分配给“3”。
如果我第二次(第三次、第四次……)运行我的 bash 脚本,我总是得到:
echo $DISPLAY (returns 2)
export DISPLAY=:3
echo $DISPLAY (returns 3)
hostname (returns opt2)
因此,尽管脚本显示它已将 DISPLAY 变量分配给“3”,但事实并非如此!
如何让我的 bash 脚本分配 DISPLAY 变量?
答案1
导出变量只会影响子 shell。您无法通过这种方式影响父 shell。如果您希望脚本能够修改当前 shell 中的变量,那么您必须将其作为 source。
. ./some_script.sh