2013-03-12 68 views
1

沿途的某个地方tempdir()在树尾的目录之前加上一个额外的正斜杠。这是否有任何理由,是否有任何重要的情况?根据另一个站点的this answer,目录树中的双斜杠无关紧要(但它们在路径的开始处),那么为什么osx上的R会添加额外的一个?为什么tempdir()在osx上的目录树末尾添加额外的斜杠?

这可能被认为是一个错误,或者是否有必要的情况?在这个例子中的两条路径正确解析:

tempdir() 
    [1] "/var/folders/ck/1x5j5jvx5mq17clf5r32gg540000gn/T//Rtmpp6VKKK" 
normalizePath(tempdir()) 
    [1] "/private/var/folders/ck/1x5j5jvx5mq17clf5r32gg540000gn/T/Rtmpp6VKKK" 

setwd(tempdir()) 
write.table("" , file="This is a test.txt") 

system(paste0("cd " , tempdir() , "; ls -a")) 
    . 
    .. 
    This is a test.txt 

system(paste0("cd " , normalizePath(tempdir()) , "; ls -a")) 
    . 
    .. 
    This is a test.txt 

顺便说一句,我意识到,这不是非常相关的这个网站,但也许有人更osx经验可为什么normalizePath()改变/var/private/var棚灯?这是否与别名有关?

回答

2

这很可能是实施tempdir时的一个错误。该函数使用环境变量TEMPDIR中指定的目录作为基础目录,如果TEMPDIR包含尾部斜线,tempdir()在编写结果时似乎不会注意到。如果存在,更好的实施将首先删除尾部斜线。

是的,在Mac OS X上,/tmp是到​​的符号链接。

+1

+1谢谢。这是如此之快,我不能接受另外8分钟的答案。 – 2013-03-12 13:08:14