沿途的某个地方tempdir()在树末尾的目录之前添加了一个额外的正斜杠。是否有任何原因,是否有任何重要的情况?根据另一个站点的这个答案,目录树中的双斜杠无关紧要(但它们在路径的开头),那么为什么R在 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
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我意识到它与这个网站不是很相关,但也许有更多osx经验的人可以解释为什么要normalizePath()更改/var为/private/var? 这与别名有关吗?
这很可能是tempdir. 根据功能文档[1]:
环境变量
TMPDIR,TMP和TEMP依次检查,并使用第一个找到的指向可写目录的变量:如果没有成功‘/tmp’则使用。
TMPDIR,默认情况下,包含一个尾部斜杠,tempdir()在组合其结果时似乎没有注意到。更好的实现将首先删除尾部斜杠(如果存在)。
是的,在 Mac OS X 上,/tmp是指向/private/tmp.
[1] https://stat.ethz.ch/R-manual/R-devel/library/base/html/tempfile.html