GUI 將 /tmp 視為文件

GUI 將 /tmp 視為文件

cp一位朋友在使用複製磁碟映像(準確地說是稀疏包)時遇到問題。我發現他使用的行將所有 /contents/ (稀疏包是包,即像 GUI 中的文件一樣處理的目錄)複製到新目錄,而不是複製稀疏包本身。

後來我在計算機上創建了一個稀疏包來進行實驗cp並重現了他所得到的行為。隨後,Finder 和 Dock 開始/tmp像文件一樣對待。單擊我在側邊欄中為其創建的條目將打開終端視窗/tmp ; exit;(當然,這會失敗,因為它/tmp是目錄)。我仍然可以像平常一樣使用堆疊,除了Open in Finder底部的選項,它會嘗試執行它。

奇怪的是,我仍然可以/tmp透過開啟子目錄並使用Go > Enclosing Folder命令 ( command+ up arrow) 在 Finder 中開啟。我也可以透過命令列正常存取它。

我嘗試刪除並重新建立側邊欄條目和堆疊,但所做的只是導致 Dock 將其顯示為文件,並在我單擊它時嘗試立即執行它。然後我嘗試重新啟動以清除它;它似乎確實正常清除,但這並沒有影響問題。

誰能解釋一下這個問題?


更新:我想嘗試一下ls -l,它的權限字段末尾有一個@。我發現它有一個com.apple.FinderInfo擴展屬性,儘管我嘗試閱讀它只得到了這個:

00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

刪除擴展屬性(xattr -d com.apple.FinderInfo /tmp就像我自己一樣,沒有提升的權限)似乎已經解決了這個問題,儘管從我對它的快速搜索中可以看出,它可能會產生其他負面後果(而且我不確定是否存在com.apple.FinderInfo屬性之前...)。我仍然想知道可能發生了什麼以及為什麼我會出現這種行為。

答案1

FinderInfo xattr 中的「20」表示捆綁位元已設定。捆綁位告訴 Finder 將資料夾顯示為文件,而不是資料夾。我懷疑這個屬性是從sparsebundle 複製的(這實際上是一個資料夾,但Finder 顯示為一個簡單檔案)。因此,您所看到的或多或少是設定該標誌後的預期行為。

相關內容