导出 DISPLAY 变量不起作用

导出 DISPLAY 变量不起作用

我可以通过运行命令行来分配 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

相关内容