為什麼軟體經常將本地資料保存在$HOME/.?

為什麼軟體經常將本地資料保存在$HOME/.?

我通常安裝的大多數應用程式(opam、cargo、vscode、julia...)都在我的主資料夾中保留本地儲存。這種偏好有理由嗎?或者更好的是,其他選擇是否有缺點?

例如,有時建議此類檔案應位於 /var 或 ~/.local/share 中,但在「跨發行版」應用程式中使用這些資料夾可能會出現問題或煩惱。

您知道任何此類可能的問題嗎?

[我在這裡提出的三個問題中任何一個的任何答案都會令人滿意]

答案1

在 Rob Pike 的 Google+ 貼文中, 捷徑的教訓,給出這樣的解釋:

很久以前,當 Unix 檔案系統的設計正在製定時,條目...就出現了,以使導航更容易。我不確定,但我相信..在版本 2 重寫期間,當檔案系統變得分層時(它早期有一個非常不同的結構)。然而,當輸入 時ls,這些檔案就會出現,因此 Ken 或 Dennis 為程式添加了一個簡單的測試。當時是用彙編程式寫的,但有問題的程式碼相當於這樣:

    if (name[0] == '.') continue;

該聲明比應有的內容短了一點,即

    if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

但是嘿,這很容易。

結果有兩件事。

首先,開了一個不好的先例。許多其他懶惰的程式設計師透過同樣的簡化引入了錯誤。以句點開頭的實際檔案在應該計數時通常會被跳過。

其次,更糟的是,創建了「隱藏」或「點」檔案的想法。結果,更多懶惰的程式設計師開始將檔案放入每個人的主目錄中。我在用來輸入此內容的機器上沒有安裝那麼多東西,但我的主目錄有大約一百個點文件,我什至不知道其中大部分是什麼,也不知道它們是否仍然需要。透過我的主目錄的每個檔案名稱評估都會因這種累積的污泥而減慢。

我很確定隱藏文件的概念是一個意想不到的結果。這肯定是個錯誤。

(對於那些反對點文件有某種用途的人,我不否認這一點,但反駁說,是這些文件有這種用途,而不是其名稱的約定。它們可以很容易地位於$HOME/cfg 或$ HOME 中/lib,這就是我們在計劃 9 中所做的,其中沒有點文件,可以吸取教訓。

所以我的理解是:

當這些「點檔案」變得不可見時,其他程式設計師介入並決定儲存他們寶貴的配置資料的位置與 和.文件一起位於點文件中..。由於一開始的文件層次結構不是很發達,它們最終都位於 $HOME 目錄中,很快這就成為每個人都遵守的不成文約定,追隨創始人的腳步。

這導致了以下怪物的出現:

影像

參考 :

Linux 歷史:點文件如何成為隱藏文件

相關內容