2013-03-12 67 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