在Unix/Linux中保持用戶配置數據的推薦方式是什麼? 我的編程語言是C++。配置數據將保存爲XML /文本/二進制格式,我對處理這些文件沒有任何問題。我想知道我可以在哪裏保存它們。例如,在Windows操作系統中,配置數據可以保存在註冊表(舊的方式)或用戶應用程序數據目錄中。那麼Linux呢? 我需要讀/寫訪問配置文件。Unix/Linux中的程序配置數據
回答
註冊表的概念是特有的Windows和微軟曾經承認它正在考慮不周(見this,this, this,this (see #2)和this)。
在Unix和Linux中,系統範圍程序的配置位於/ etc或可能是特定於應用程序的子目錄中。
每個用戶配置數據都以隱藏文件輸入文本格式或用戶主目錄中特定於應用程序的隱藏目錄保存在用戶的主目錄中。引用主目錄的正確方法是通過環境變量HOME
。通過使.
成爲名稱的第一個字符來創建隱藏的文件和目錄。
全系統配置示例爲/etc/wgetrc
和/etc/ssh/
。每用戶數據的例子是$HOME/.bashrc
和$HOME/.mozilla/
。
這取決於你的Linux風格,但作爲一般規則,大多數程序都在/ etc目錄中的某個位置使用主目錄中的.config文件,它可以覆蓋/ etc目錄中的默認值。
大點的.config應該是。[配置文件名稱]
您可能想通過「.config」來說明您實際上是指名稱以「。」開頭的文件,而不是具有「.config」擴展名的文件。 「。」前綴是默認情況下保持文件「隱藏」。有一堆配置文件的程序有時候會有一個「.config」目錄,裏面有文件。而且,old-skool Unix應用程序傾向於使用他們的配置文件/目錄的名稱「。[appname] rc」。 – 2010-03-05 06:37:23
的XDG基本目錄規範指定了配置和其他文件應存放在Linux和其他基於X的操作系統:
http://freedesktop.org/wiki/Specifications/basedir-spec
這是現代的方式,並最終可能降低dotfile混亂在典型用戶的主目錄中。
點文件是經典的Unix解決方案。如果你想要自己處理讀/寫所有事情,那就去做吧。
但是,我使用的大多數現代程序都使用GConf來存儲首選項。無論是作爲開發人員還是用戶(顯然作爲管理員,但我在那裏沒有經驗),它使許多事情更容易。
關於GConf的好處,謝謝。就我而言,我有用於管理XML配置文件的跨平臺代碼,這些文件已經在Windows中運行。完成這些後,我需要添加平臺特定的代碼來選擇配置文件路徑。 – 2010-03-05 14:24:00
http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/classKConfig.html用於* other *流行桌面的配置方案。 – ephemient 2010-03-05 18:31:21
- 1. C#應用程序配置數據
- 2. 數據庫連接在應用程序配置中的作用
- 3. 配置在unix程序中的位置
- 4. 讓log4net使用配置數據的應用程序配置文件
- 5. 配置大量數據的應用程序的最佳方法
- 6. 配置SQL CLR程序集中的遠程數據庫連接字符串
- 7. 流利的NHibernate - 配置Oracle數據提供程序ODP
- 8. 從數據庫配置Laravel調度程序的時間
- 9. 配置ADP應用程序以使用不同的數據庫...?
- 10. Xml與數據庫的應用程序配置
- 11. 多租戶應用程序的數據庫配置
- 12. Microsoft數據應用程序塊的數據傳遞配置路徑
- 13. 用於存儲應用程序配置數據的LDAP vs數據庫
- 14. 爲Grails應用程序存儲和使用數據庫中的應用程序配置設置?
- 15. Ruby on Rails:如何在應用程序配置中設置數據庫超時?
- 16. Silverlight中的應用程序配置
- 17. C#3.5中的應用程序配置
- 18. MERN應用程序中的Babel配置
- 19. GAC +配置中的.NET程序集
- 20. 更新mysql數據庫結構(表配置+程序/函數)並保存數據
- 21. 如何配置實體框架的位置元數據的web應用程序
- 22. Rails3 - 如何獲取應用程序中的aws-s3的yml配置數據?
- 23. 從數據庫條目獲取應用程序配置
- 24. 沒有爲此DbContext配置數據庫提供程序
- 25. 爲ADFS配置生成應用程序元數據文件
- 26. DotNet Core,沒有數據庫提供程序已配置此DbContext
- 27. 配置企業庫5.0數據訪問應用程序塊
- 28. 數據訪問應用程序塊5.0流利配置
- 29. .net在兩個程序之間共享配置數據?
- 30. 如何爲Django應用程序配置數據庫權限?
您不應該依賴環境變量HOME。因爲我們正在談論可以進行系統調用的C++,所以你應該使用'struct passwd * pw = getpwuid(getuid());'(或者getpwuid_r',如果你需要線程安全的話),然後使用'pw-> pw_dir' – 2010-03-05 07:58:50
好的建議。我從來沒有使用$ HOME的問題。我注意到許多程序也必須以這種方式工作,因爲有時候我會用有用的預期結果覆蓋HOME。 – wallyk 2010-03-05 10:28:10
謝謝,我想我會遵循這個。順便說一下,我可以使用「〜」作爲程序中的主目錄嗎? – 2010-03-05 14:29:16