Câu trả lời:
~/.Xdefaultslà phương pháp cũ hơn để lưu trữ tài nguyên X. Tập tin này được đọc lại mỗi khi chương trình Xlib được khởi động. Nếu X11 được sử dụng qua mạng, tệp phải có mặt trên cùng hệ thống tệp với các chương trình.
~/.Xresourceslà mới hơn. Nó được tải xrdbvào thuộc RESOURCE_MANAGERtính của cửa sổ gốc X11. Bất cứ khi nào bất kỳ chương trình tìm kiếm một tài nguyên, nó được đọc thẳng từ RESOURCE_MANAGER.
Nếu thuộc tính này không tồn tại, Xlib quay lại phương pháp đọc cũ .Xdefaultstrên mỗi lần khởi động chương trình. Lưu ý rằng hầu hết các bản phân phối sẽ ~/.Xresourcestự động tải nếu có, khiến .Xdefaultsbị bỏ qua ngay cả khi bạn chưa bao giờ chạy xrdbthủ công.
Ưu điểm của phương pháp mới là đủ để gọi xrdbmột lần và tài nguyên sẽ có sẵn cho bất kỳ chương trình nào đang chạy trên màn hình này, cho dù là cục bộ hay từ xa. (Tên ~/.Xresourceschỉ là quy ước - bạn có thể sử dụng xrdbđể tải bất kỳ tệp nào, thậm chí .Xdefaults.)
Hướng dẫn lập trình Xlib P.441:
Trước X11R2, cài đặt tài nguyên X đã được đọc từ tệp .Xdefaults trong thư mục chính của người dùng và tùy chọn trên bất kỳ máy nào mà máy khách X đang chạy, vì vậy nhiều tệp khó duy trì.
Sau đó, chương trình xrdb đã được thực hiện để lưu trữ cài đặt tài nguyên của người dùng từ .Xresource vào thuộc tính XA_RESOURCE_MANAGER của cửa sổ gốc trên máy chủ X hiện tại, vì vậy tất cả các máy khách được kết nối với cùng một máy chủ đều có quyền truy cập vào chúng. Nếu người dùng chưa gọi xrdb để đặt thuộc tính, thì .Xdefaults được đọc.
[...] tài nguyên X được lưu trữ ở hai vị trí tiêu chuẩn, tùy thuộc vào việc chúng áp dụng cho tất cả các màn hình hay cho một vị trí cụ thể:
- thuộc tính RESOURCE_MANAGER của cửa sổ gốc của màn hình 0
- thuộc tính SCREEN_RESOURCES của cửa sổ gốc của màn hình tùy ý
Nó không hoàn toàn kết thúc ở đó.
$XENVIRONMENTbiến, mặc định nếu không được đặt. Điều này được sử dụng theo cùng một cách , nhưng luôn luôn được đọc bất kể có mặt hay không. Bạn có thể sử dụng các tệp để giữ một số cài đặt dành riêng cho máy trong khi sử dụng cho các cài đặt chung .~/.Xdefaults-hostname.XdefaultsRESOURCE_MANAGER.Xdefaults-hostnamexrdbCả hai mục số 4 và số 5 được liệt kê dưới đây dường như chỉ được sử dụng bởi các chương trình Xlib thuần túy - không phải GTK 3 hoặc các bộ công cụ khác.
Vị trí thứ tư là thư mục được chỉ ra bởi $XAPPLRESDIRbiến môi trường. (Kỳ lạ, nếu biến không được đặt, $HOMEđược sử dụng làm mặc định.) Khi chương trình được khởi động, nó sẽ xuất hiện nếu có bất kỳ tệp nào sau đây tồn tại (tên tệp giống với tên lớp của chương trình):
$XAPPLRESDIR/$LC_CTYPE/XTerm$XAPPLRESDIR/language/XTerm$XAPPLRESDIR/XTerm( languagecó nguồn gốc từ $LC_CTYPEviệc tước tất cả trừ thành phần đầu tiên; ví dụ: en_US.utf-8→ en.)
Vị trí thứ năm là các thư mục "mặc định ứng dụng" trên toàn hệ thống. Một lần nữa, các thư mục mặc định ứng dụng được kiểm tra khi khởi động chương trình nếu chúng có tệp được đặt tên theo chương trình. Ví dụ: XTerm (trên Arch Linux) sử dụng:
/etc/X11/$LC_CTYPE/app-defaults/XTerm/etc/X11/language/app-defaults/XTerm/etc/X11/app-defaults/XTerm/usr/share/X11/$LC_CTYPE/app-defaults/XTerm/usr/share/X11/language/app-defaults/XTerm/usr/share/X11/app-defaults/XTermCác tệp mặc định ứng dụng thường được cài đặt /usr/sharecùng với chính chương trình; ghi đè quản trị viên sẽ đi đến /etc.
Tất cả mọi thứ được đề cập ở trên đều được ghi lại rất chi tiết trong tài liệu của bộ công cụ X.org - bài viết X Intkit Intrinsics - Giao diện ngôn ngữ C , phần Tải cơ sở dữ liệu tài nguyên .
Thật không may, tôi không thể tìm thấy bất kỳ hướng dẫn sử dụng nào gần đây mô tả tài nguyên X, chủ yếu là vì chúng không liên quan trong năm 2012. Nhưng để biết thông tin lịch sử (đọc: hết hạn khủng khiếp), bạn có thể đọc hướng dẫn sử dụng X Window System cho X11 R3 và R4 của Hệ thống cửa sổ X phần 9: Cài đặt tài nguyên (bắt đầu từ trang 181).
xrdbđã từng được chạy cho màn hình X này kể từ khi đăng nhập - nghĩa là, nếu thuộc tính gốc X tồn tại - thì xlib sẽ không sử dụng .Xdefaults nữa.