Tại sao một số ứng dụng sử dụng ~ / .config / appname cho dữ liệu cấu hình của chúng trong khi các ứng dụng khác sử dụng ~ / .appname?


37

Tôi đã nhận thấy rằng một số ứng dụng đưa các tệp cấu hình của chúng vào ~/.config/appnametrong khi các ứng dụng khác sử dụng ~/.appname(cách cổ điển, AFAIK) cho việc này. Ý nghĩa của sự khác biệt này là gì và có thể tốt hơn để xem xét cho một ứng dụng của tôi?

CẬP NHẬT: Có vẻ như (XDb Ubuntu 11.10 mặc định) của tôi $ XDG_CONFIG_HOME được đặt thành ~/và hầu hết các ứng dụng trong hệ thống của tôi (như Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine, v.v.) đều tuân thủ điều này. Nhưng vẫn còn nhiều ứng dụng (như Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE, v.v.) sử dụng ~/.config/thay thế. Một điều đáng ngờ khác là các thư mục trong ~/.config/chúng không bị ẩn (không có dấu chấm trong tên của chúng) - không phải các thư mục cấu hình ứng dụng dự kiến ​​sẽ có tên riêng mà không phụ thuộc vào vị trí (giá trị $ XDG_CONFIG_HOME)?

Câu trả lời:


44

Bổ sung cho câu trả lời tuyệt vời của jasonwryan, giải quyết một số vấn đề của bạn:

  • Của bạn $XDG_CONFIG_HOMEkhông thiết lập để ~/. Nó chỉ đơn giản là không được thiết lập. Vì vậy, các ứng dụng tuân theo Thông số XDG sử dụng mặc định~/.config

  • Các thư mục bên trong /.configkhông bị ẩn bởi vì họ không phải. Toàn bộ quan điểm của việc sử dụng một ~/.configthư mục là để làm lộn xộn người dùng $HOME. Vì chúng đã ở trong một thư mục riêng biệt, ẩn, nên không cần phải ẩn bên trong đó.

  • Phần mềm không tuân theo thông số kỹ thuật (không may vẫn là đại đa số) sử dụng một thư mục ẩn cho các cài đặt của họ (như ~/.myapp) như một nỗ lực không làm lộn xộn người dùng $HOME. Nó (loại) hoạt động, nhưng vẫn là một cách tiếp cận tồi khi, ví dụ, bạn cố gắng sao lưu các cài đặt và "dữ liệu lớn" của bạn (như Ảnh, Video, Âm nhạc). Có tất cả các cài đặt ở một nơi, không trộn lẫn với dữ liệu của người dùng, là cách tiếp cận tốt hơn nhiều

  • Đối với "có tên không đổi bất kể XDG_CONFIG_HOMEđiểm đến đâu" , họ đã làm: đó là appname không có dấu chấm dẫn đầu. Hãy nhớ rằng: những người sử dụng $HOME/.appnamelà những người bỏ qua XDG Spec. Họ sử dụng một con đường mã hóa cứng.

  • Đối với các ứng dụng của bạn, vui lòng sử dụng Tiêu chuẩn XDG ! Tôi xin bạn, và người dùng của bạn sẽ nói lời cảm ơn vì bạn không làm lộn xộn $ HOME của họ nữa.


4
Chỉ muốn nói câu trả lời của bạn là tuyệt vời nhất ! Sự khôn ngoan thông thường đặc biệt hữu ích và quan điểm của bạn được giải thích rất rõ :) cảm ơn!
Steve Benner

Đâu là sự khác biệt giữa danh sách các tệp ẩn trong thư mục HOME và danh sách các tệp không bị ẩn trong thư mục cấu hình ẩn? Đối với tôi nó rộng như nó dài.
ceving

@ceving: Tôi thấy 2 điểm khác biệt chính, mỹ phẩm và thực tế: theo $HOMEquan điểm của bạn , đó là một ~/.configmục duy nhất thay vì một vài, có lẽ hàng tá trong số chúng. Và nó làm cho việc sao lưu các thiết lập của bạn (hoặc loại trừ chúng) dễ dàng hơn nhiều! Làm thế nào bạn có thể phân biệt các cài đặt phần mềm từ, nói, của bạn ~/Documentshoặc của bạn ~/.cache?
MestreLion

24

Bởi vì các ứng dụng đặt các tệp cấu hình $HOMEđang bỏ qua Đặc tả thư mục cơ sở XDG , đáng chú ý:

Có một thư mục cơ sở duy nhất liên quan đến các tệp cấu hình dành riêng cho người dùng nên được ghi. Thư mục này được xác định bởi biến môi trường $ XDG_CONFIG_HOME ...

Nếu $ XDG_CONFIG_HOME không được đặt hoặc trống, nên sử dụng mặc định bằng $ HOME / .config.

Có vẻ như (mặc định XUbfox 11.10) của tôi $XDG_CONFIG_HOMEđược đặt thành ~/, nhưng vẫn còn nhiều ứng dụng đang sử dụng~/.config/
Ivan

3
Câu trả lời này là không đầy đủ. Cụ thể, nó dường như ngụ ý rằng đặc điểm kỹ thuật đã có từ ngày đầu tiên, và đó chỉ là các ứng dụng đã bỏ qua nó kể từ đầu. Nhưng thực tế có khá nhiều ứng dụng đã tồn tại lâu hơn nhiều so với XDG với thông số kỹ thuật của nó.
Ruslan

Một phiên bản 0,7 Poettering tiêu chuẩn. Điều đó phải thực sự quan trọng. Bất cứ ai có thể giải thích vấn đề mà các tiêu chuẩn giải quyết?
ceving

@Ruslan: Nó đã ở đó từ năm 2003. Đó là 15 năm trước! Đúng, đó không phải là ngày đầu tiên và nhiều phần mềm đã được tạo ra trước đó. Nhưng bất kỳ phần mềm nào như vậy rất có thể vẫn còn nhiều bản cập nhật vẫn đang được sử dụng cho đến ngày hôm nay, vì vậy có thể nói rằng những phần mềm không chuyển sang tiêu chuẩn XDG đã cố tình chọn bỏ qua nó.
MestreLion

@ceving: nó giải quyết vấn đề tổ chức các thư mục của người dùng theo cách tương tự /được tổ chức: không trộn dữ liệu với các tệp thực thi với cấu hình. ~/.configlà đối tác của người dùng /etcvà điều này giúp ích rất nhiều trong việc sao lưu chẳng hạn. Nếu không /.config, mọi sao lưu cài đặt sẽ phải bao gồm thủ công tất cả các thư mục ứng dụng hoặc loại trừ thủ công tất cả các thư mục "dữ liệu lớn" của người dùng (Video, Âm nhạc và bất kỳ thư mục cá nhân nào khác mà anh ta có thể đã tạo).
MestreLion

7

Một câu trả lời gây tranh cãi hơn là:

  • ~/.configlà mặc định cho tiêu chuẩn XDG, chỉ áp dụng cho các ứng dụng tuân thủ các tiêu chuẩn FreeDesktop.org (cũng thông qua việc sử dụng $XDG_CONFIG_HOMEbiến).
  • ~/.appname tồn tại trước tiêu chuẩn freedesktop
  • Không phải ai cũng thích tiêu chuẩn freedesktop
  • "Bừa bộn" $HOMEkhông phải là một vấn đề, theo ý kiến ​​của tôi.

2
Đó không phải là một câu trả lời gây tranh cãi, đó là một câu trả lời sai và hoàn toàn sai: - Hiện tại tôi có 120 thư mục tại ~/.config, từ các ứng dụng không liên quan đến FreeDesktop.org, như Libre Office, Chromium, Deluge, rất nhiều trò chơi (bao gồm nhưng không chỉ tất cả các trò chơi sử dụng Unity3D), ứng dụng Google (Chrome, Earth), công cụ Python (IPython, Eric), Trình giả lập (Muppen 64, Desmune). Bản thân FreeDesktop.org có rất ít ứng dụng. - ~/.appnamelà một quy ước đã tồn tại trước XDG, nhưng hầu hết các phần mềm vẫn sử dụng ngày nay đã được tạo ra theo cách sau tiêu chuẩn.
MestreLion

5
- Từ quan điểm của một nhà phát triển phần mềm, không có gì để thích hay không thích trong một tiêu chuẩn thư mục, nó chỉ đơn giản là thay đổi hằng số lưu thư mục của bạn từ $HOME/.myappthành${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion

Vẫn là một tiêu chuẩn freedesktop, định nghĩa ở đây: specifications.freedesktop.org/basedir-spec/... và các ứng dụng được tự do không sử dụng của họ không muốn. Không phải ai cũng coi việc tách thành .config là cần thiết.
David Gardner

Đúng, nhưng ngụ ý rằng các ứng dụng tuân theo tiêu chuẩn bằng cách nào đó "ứng dụng FreeDesktop.org" rất sai lệch.
MestreLion

2
Có lợi ích gì ~/.apphơn ~/.config/appkhông?
sam boosalis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.