我正在使用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的所有子文件夹。
有其他人遇到过这种行为吗?任何解释或解决方案?
答案 0 :(得分:3)
这可能是意料之外的,但这不是错误:
(1)路径仍然正确。 "" (点)是对包含此条目的目录的引用。这是POSIX http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html所要求的(参见第4.12节)。
(2)Mathworks文档指定"其中"返回"完整路径"。它没有给出"完整路径"的定义。在我的书中,他们可以自由地使用"完整路径"允许"。"路径中的目录自引用。
编辑:至于"解决方案"和"解释":
解决方案:您可以使用
删除额外的点目录strrep(which('filename'),'/./','/')
无说明:
Mathworks没有制作他们的""的源代码。功能可用。因此,只有他们才能解释这种行为。联系客户支持。除了您目前提供的信息,他们可能还需要输出matlab"路径"你的安装环境中的突击队能够解释它。