""的奇怪行为用于Linux的Matlab命令

时间:2015-11-20 23:03:11

标签: linux matlab

我正在使用Fedora 22下的Unix版Matlab R2015a。我刚发现如果执行命令

which filename

当我找到的文件夹与 filename 所在的文件夹不同时,我会得到 filename 的完整路径一个额外的文件夹" /."。例如,假设我在 filename 所在的文件夹中运行命令时得到的 filename 的完整路径是

/home/user/Documents/MATLAB/Apps/project/filename.m

然后,当我位于不同的文件夹时,我得到的路径是

/home/user/Documents/MATLAB/Apps/project/./filename.m

我在Windows中测试了R2012上的命令,行为是预期的,也就是说,无论你身在何处,完整路径名都是相同的。

我的matlabroot:/usr/local/MATLAB/R2015a

我的用户路径:/home/user/Documents/MATLAB/

在我的路径中,我有很多其他文件夹,包括userpath的所有子文件夹。

有其他人遇到过这种行为吗?任何解释或解决方案?

1 个答案:

答案 0 :(得分:3)

这可能是意料之外的,但这不是错误:

(1)路径仍然正确。 "" (点)是对包含此条目的目录的引用。这是POSIX http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html所要求的(参见第4.12节)。

(2)Mathworks文档指定"其中"返回"完整路径"。它没有给出"完整路径"的定义。在我的书中,他们可以自由地使用"完整路径"允许"。"路径中的目录自引用。

编辑:至于"解决方案"和"解释":

解决方案:您可以使用

删除额外的点目录
strrep(which('filename'),'/./','/')

无说明:

Mathworks没有制作他们的""的源代码。功能可用。因此,只有他们才能解释这种行为。联系客户支持。除了您目前提供的信息,他们可能还需要输出matlab"路径"你的安装环境中的突击队能够解释它。