【发布时间】:2023-04-07 07:09:01
【问题描述】:
我有一个要在 MATLAB 中执行的 bash 脚本。我使用 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
【问题讨论】:
-
你能分享一个有问题的脚本的最小复制示例吗?
-
并展示你如何使用
system命令 -
system运行的 shell 可能使用不同的PATH,请参阅“UNIX 提示和限制”here -
我根据您的要求编辑了问题。我怎样才能设置路径来完成这项工作?
-
docker可执行文件似乎不在您使用system()调用时 Matlab 打开的子 shell 中的 $PATH 中。如果您在 bash 脚本中明确设置相同的 PATH(在您的 bash 终端中)怎么办?