【问题标题】:How to have Matlab recognize my $PATH?如何让 Matlab 识别我的 $PATH?
【发布时间】:2015-06-15 19:22:22
【问题描述】:

我正在使用 Matlab (link) 的 GraphViz 接口,并注意到在尝试调用 graphviz 时,Matlab 对 shell 的调用(例如,通过 system!)返回错误(未找到命令)或 neato 或其他相关名称,当从我自己的默认 shell(bash,在 OSX 上使用终端)调用时完全有效。

好吧,我使用自制软件将 graphviz 安装到我的系统中,所以它应该可以正常工作——我从 Matlab 测试了 !brew -v,但它也不起作用!所以,我检查了我的路径。在 bash 中,echo $PATH 返回

/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin

在 Matlab 中,!echo $PATH 返回/usr/bin:/bin:/usr/sbin:/sbin

所以,这可能会导致我的问题。也就是说,

1) 如何让 Matlab 自动同步正确的路径,或者每次启动时同步一次? (即,我可以将代码放入startup.m

2) 有人可以诊断导致 Matlab 找不到正确环境变量的原因,以及这是全局问题还是可能特定于我的配置?

非常感谢!

【问题讨论】:

  • 你能试试他们在这次交流中讨论的内容吗:mathworks.com/matlabcentral/newsreader/view_thread/255609
  • 这种方法可行,但必须为每个 Matlab 会话手动调整 PATH 会变得很麻烦。
  • 我不明白您为什么需要重复编辑。
  • 我发现了这个superuser.com/questions/31353/path-in-vim-doesnt-match-terminal - 当您通过 finder 启动应用程序时,点文件不受尊重似乎是 Mac 的一个常见问题。不幸的是,我只知道解决方法而不是原因。
  • @TimBiegeleisen 我仍然很好奇到底是什么导致了这种情况发生,显然,OSX 上的各种应用程序!希望有一个全局解决方法(缺少将用户配置文件设置粘贴到全局设置中)。

标签: macos matlab shell


【解决方案1】:

您所看到的最可能的解释是,Matlab 在您的 OSX 发行版上运行的用户与您自己的配置文件不同。

当您从 Matlab 执行 echo $PATH 时,它会向您显示运行 Matlab 的用户的 PATH。但是,当您从命令行执行 echo $PATH 时,它会向您显示 您的 用户配置文件的 PATH

要更正此问题,请调查您运行 Matlab 的方式,并确保您以自己的身份运行它(或作为具有正确 PATH 设置的用户)。

更新:

我在家里的 Fedora 机器上下载了 Matlab 8.5。除非我使用sudo su 后跟./matlab,否则我无法运行它。我观察到的是,Matlab 缓存了在整个会话中启动它的 Linux 用户的 PATH 变量的值。在 Matlab 会话期间更改 PATH 不会更改 Matlab 中 !echo $PATH 的输出。

请尝试在您的设置中重现以下内容:

  1. 从终端窗口输入sudo su
  2. echo $PATH 并记录你所看到的
  3. ./matlab启动matlab
  4. !echo $PATH 来自 Matlab。您看到的应该与第 2 步一致。
  5. 杀死 Matlab,然后在同一终端执行 export PATH=$PATH:/newpath/
  6. 重复步骤 3 和 4,您应该会在 Matlab 中看到新的 PATH

【讨论】:

  • 我以最普通的方式运行 Matlab,双击应用程序图标。活动监视器告诉我相应的进程有我的帐户(管理员帐户)作为用户。终端也从我的帐户运行。我不确定 shell 是否在不同于终端的进程下运行。
  • 灵感:Matlab 有可能在安装/首次运行时缓存PATH 变量吗?如果是这样,您是否会碰巧知道您的用户 PATH 在早些时候是否类似于 Matlab 显示的内容?
  • 我不确定,但我不会怀疑。可执行文件 /Applications/MATLAB_R2014a.app/bin/matlab 在通过 ./matlab -e 运行时会列出所有生成的环境变量。这包括SHELL=/bin/bash 和正确的(更长的)PATH。啊,但我从终端运行它!当然它会得到正确的信息。嗯。
  • 我可以做的是,例如,只需使用我的用户帐户按照您的说明进行操作,而不是切换到 root。这是我发现的:使用我常用的用户帐户从终端打开原始未修改的 matlab 可执行文件,总是给出正确的路径(包括如果我附加 /newpath/ 进行调整)。所以,“双击打开”确实是罪魁祸首。
  • 我不确定你的意思!顺便说一句,人们发现了其他几个临时解决方案 (blogs.mathworks.com/community/2010/02/08/…),它们可能会阐明整个问题。此外,我们可能希望将此讨论用于聊天而不是评论线程。 [:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
相关资源
最近更新 更多