我有一个bash脚本,我想在MATLAB中执行。我用system((来执行它。但是当它执行时,我得到
docker: command not found
我在脚本中使用docker命令,并将其正确安装在我的计算机中。如果我使用与在MATLAB中从system((调用中运行的命令完全相同的命令从终端运行脚本,它会正常工作。在某种程度上,如果我只是从MATLAB函数(最后一行(中删除bash脚本执行调用,然后运行该函数,然后从终端运行脚本,一切都会正常工作。
例如,这里有一个MATLAB函数:
function foo(container_id)
% Copies this file to the root of a docker container given by container_id
system(['./copy_foo.sh ' container_id])
end
这是bash脚本
#!/bin/bash
docker cp foo.m $1:/root
从终端运行
./copy_foo.sh CONTAINER_ID
产生期望的结果。从命令窗口运行Matlab函数
foo('CONTAINER_ID')
收益率:
docker: command not found
MATLAB在启动时更改环境变量。特别地,LD_LIBRARY_PATH
和PATH
受到影响。有两种解决方案:
-
使用
docker
可执行文件的显式路径。Bash脚本将包含行/path/to/docker cp foo.m $1:/root
。 -
在运行脚本之前,请确保环境已正确初始化。您的MATLAB脚本将包含行
system(['bash --login -c ./copy_foo.sh ' container_id])
(或类似的东西,我还没有测试过…(