【问题标题】:Unix commands through Matlab - PATH not right?通过 Matlab 的 Unix 命令 - PATH 不正确?
【发布时间】:2015-04-02 10:38:30
【问题描述】:

我已经安装了一系列二进制文件,它们出现在我的 MACOSX 的 usr/local/bin 中(它们被称为 DCMTK)。 usr/local/bin 文件夹按预期出现在路径上:

PATH=/Users/jim/Library/Enthought/Canopy_64bit/User/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:niftyreg_install/bin

我可以从终端窗口中的任何文件夹按预期运行这些命令,但是我似乎无法使用以下命令从 Matlab (2014b) 中运行它们中的任何一个:

cmd=['dcmdump -h'];
system(cmd)
/bin/bash: dcmdump: command not found

在终端中运行 'env' 表明我使用的是与 Matlab 相同的 SHELL:

SHELL=/bin/bash

我的问题是为什么当 Matlab 调用 bin/bash 时它没有在 usr/local/bin 中找到二进制文件?我需要更新 .bash_profile 中的内容吗?

谢谢,

吉姆

【问题讨论】:

  • 尝试在 Matlab 内部回显您的 PATH...cmd=['echo $PATH']; system(cmd);
  • 'cmd=['echo $PATH'];系统(cmd); /usr/bin:/bin:/usr/sbin:/sbin' 你一针见血 马克,usr/bin/local 不在那里!你有机会告诉我如何添加它吗?怎么会有这种差异?
  • 对不起,我没有。我只是想帮你解决。我相信现在问题更清楚了,其他人将能够提供帮助。祝你好运!
  • 感谢您帮助确定问题@MarkSetchell,海报下方的行设法添加了所需的单行。仍然不确定为什么通过 MATLAB 和通过终端询问的 PATH 之间存在差异,但已经找到了解决方案!

标签: macos bash matlab


【解决方案1】:

正如 Mark Setchell 在他的 cmets 中已经指出的那样,您可以在 MATLAB 中使用 PATH 变量来回显

cmd=['echo $PATH'];
system(cmd);

您还可以使用MATLAB的getenv函数获取环境变量,例如$PATH

getenv('PATH');

正如您在 cmets 中发布的那样,在您的情况下,$PATH 变量中缺少 /usr/bin/local。 MATLAB 有一个通过setenv 函数设置环境变量的选项。但请注意:这会将变量设置为 only 指定的值。要附加文件夹,您必须查询现有变量并将文件夹附加到该变量:

setenv('PATH', [getenv('PATH'),':','/usr/bin/local']);

使用;(适用于Windows 系统)或:(适用于基于Unix 的系统)作为分隔符。在上面的示例中,当您使用 Mac OS X 时,我添加了 :

【讨论】:

  • 嗨@hbaderts,非常感谢您的建议 - 这绝对完美!非常感谢您的解决方案。顺便说一句-您知道为什么通过 MATLAB 查询 PATH 会给出与在终端中完成的列表不同的列表吗?我认为重点是它应该是一样的。吉姆
  • 嗨,吉姆,我不知道这在 Mac 上为什么以及如何工作,但终端和其他程序的 PATH 并不相同。如果您从终端启动 MATLAB,则它与终端本身具有相同的 PATH。当您像往常一样启动应用程序时,PATH 会有所不同。
猜你喜欢
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2020-11-07
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
相关资源
最近更新 更多