Shell 调用 shell 并传递环境变量或不传递

Shell 调用 shell 并传递环境变量或不传递

我希望/usr/bin/FreeFileSync每天最多从我的 crontab 启动/运行(FFS)一次,每当安装外部备份目标卷时。

为此,我使用了@Germar 的回答:即,在调用小型备份脚本(作为该脚本基名的第二个参数)之前,spooling-script 会执行一些整理工作。被调用的备份脚本(子进程)依次执行检查并调用 FFS(大子进程)。

因为 FFS 在启动时会打开其主 GUI,所以我认为我需要声明stdout如下:

DISPLAY=:0.1; export DISPLAY   # I have two screens

我的问题是我是否应该声明我的 DISPLAY环境变量在子脚本中还是在调用它的父假脱机脚本中?

@muru 的回答适用于这种情况吗?即,如果我在子脚本中包含 DISPLAY 语句,我是否需要在父脚本中获取它,因为我知道我正在处理一个环境变量

答案1

您有两个选择:

  1. 您可以使用 :

    export DISPLAY=:0.1
    

在父脚本中。正如我们所使用,export该变量将被所有子进程继承。

  1. 您可以使用 :

    DISPLAY=:0.1
    

在子 shell 中(如果它调用其他子 shell,则export在前面使用)。在这种情况下,当子脚本调用时,FFS只需将 放在DISPLAY子脚本中即可。

相关内容