如何在 Ubuntu 20.04 LTS 中通过 bash 脚本使用参数和 DISPLAY 环境变量启动 MATLAB?

如何在 Ubuntu 20.04 LTS 中通过 bash 脚本使用参数和 DISPLAY 环境变量启动 MATLAB?

在一台机器上,我有一个 PHP 脚本,它使用 exec 作为用户“matlab_executor”调用 bash 脚本,AQuA_WBSv_Instance_Spool.sh,并且不等待返回:

exec('bash -c "exec nohup setsid sudo -u matlab_executor bash /home/matlab_executor/matlab/AQUA_WBSv/AQuA_WBSv_Instance_Spool.sh testU > /dev/null 2>&1 &"');

AQuA_WBSv_Instance_Spool.sh,位于/home/matlab_executor/matlab/AQUA_WBSv/,看起来如下所示:

#DISPLAY=:0 ./matlab -r 'AQuA_WBSv_Main("$1")'| tr -d '\r'
echo "spooler entry with argument $1 executing as user $(whoami)" > /home/matlab_executor/matlab/AQUA_WBSv/output.txt | tr -d '\r'

并且它成功地写入到output.txt同一目录中,内容如下:

spooler entry with argument testU executing as user matlab_executor

此外,在本地登录matlab_executorDISPLAY=:0 ./matlab -r 'AQuA_WBSv_Main("testU")'在终端中运行、在同一目录中启动时,MATLAB 可以启动并成功运行通过参数 -r 提供的函数,同时在屏幕上直观地显示。

我的问题是:

当我从 bash 脚本中删除哈希时#DISPLAY=:0 ./matlab -r 'AQuA_WBSv_Main("$1")'| tr -d '\r',即脚本现在是:

DISPLAY=:0 ./matlab -r 'AQuA_WBSv_Main("$1")'| tr -d '\r'
echo "spooler entry with argument $1 executing as user $(whoami)" > /home/matlab_executor/matlab/AQUA_WBSv/output.txt | tr -d '\r'

为什么 MATLAB 在本地登录时无法启动或以可视方式显示,为什么我在 output.txt 中没有得到任何输出?

谢谢

相关内容