Matlab for Linux 中"which"命令的奇怪行为



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

which filename

当我所在的文件夹与filename所在的文件夹不同时,我会获得filename的完整路径,但会有一个额外的文件夹"/"。例如,假设我在file所处的文件夹中运行命令时获得的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) 路径仍然正确。"."(点)是对包含此条目的目录的引用。这是POSIX所要求的http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html(见第4.12节)。

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

编辑:关于"解决方案"one_answers"解释":

解决方案:你可以用去掉多余的点目录

strrep(which('filename'),'/./','/')

无说明:

Mathworks尚未提供其"which"函数的源代码。因此,只有他们才能解释这种行为。联系客户支持。除了您迄今为止提供的信息外,他们可能还需要安装环境中matlab"路径"突击队的输出来解释它。

相关内容

最新更新