从bash脚本启动终端时问题处理环境变量

时间:2019-04-05 19:14:42

标签: bash sh

使用设置了环境变量的方式调用以下脚本。 我需要启动一个终端,然后在该终端内从另一个脚本(utils.createLink(src,dst);)中读取该变量。

script.sh

它起作用,但是当xfce4-terminal -x sh -c \ "export VAR='${VAR}' /home/usr/scripts/script.sh" 中包含单引号时则无效。 我还觉得有一种更好的方法可以将环境变量传递给终端,但是我不知道怎么做。

我非常感谢您的帮助,对我的英语感到抱歉。

1 个答案:

答案 0 :(得分:0)

该环境的预期功能之一是可以对其进行添加,但是您绝不能从其中删除。将VAR添加到当前环境中,它将被xfce4-terminal和该终端启动的任何进程继承。

export VAR
xfce4-terminal -x sh -c /home/usr/scripts/script.sh

如果您不希望在当前环境中使用它,而仅在新终端中使用,则请使用建议的分配。

VAR="$VAR" xfce4-terminal -x sh -c /home/usr/scripts/script.sh

这避免了像您所竞争的那样脆弱的动态脚本构造。


由于xfce4-terminal本身似乎并不派生新进程,因此我会将所需的值作为参数传递给sh

xfce4-terminal -x sh -c 'VAR="$1" /home/usr/scripts/script.sh' _ "$VAR"

-c的参数仍然是固定的字符串,而不是通过对$VAR的值进行插值而生成的。