为什么tempdir()在osx上的目录树末尾添加额外的斜杠?

时间:2013-03-12 13:01:01

标签: macos r file path

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

这可能被认为是一个错误还是有必要的情况?在示例中,两个路径都正确解析:

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 }?这是与别名有关吗?

1 个答案:

答案 0 :(得分:2)

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

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