Tôi có một chương trình lưu trữ các thiết lập của nó trong ~/.config/myprogram
rằng tôi sử dụng cả tương tác và với một hệ thống xếp hàng loạt. Khi chạy tương tác, tôi muốn chương trình này sử dụng các tệp cấu hình của mình (và nó cũng vậy). Nhưng khi chạy ở chế độ hàng loạt, các tệp cấu hình không cần thiết vì tôi chỉ định các tùy chọn dòng lệnh ghi đè lên tất cả các cài đặt có liên quan. Hơn nữa, truy cập các tệp cấu hình qua mạng làm tăng thời gian khởi động của chương trình thêm vài giây; nếu các tệp không tồn tại, chương trình sẽ khởi chạy nhanh hơn nhiều (vì mỗi công việc chỉ mất khoảng một phút, điều này có tác động đáng kể đến thông lượng công việc hàng loạt). Nhưng vì tôi cũng sử dụng chương trình một cách tương tác, tôi không muốn di chuyển / xóa các tệp cấu hình của mình mọi lúc. Tùy thuộc vào thời điểm các công việc hàng loạt của tôi được lên lịch trên cụm (dựa trên việc sử dụng của người dùng khác),
(Ngoài ra: hiệu suất tệp mạng quá chậm có lẽ là một lỗi, nhưng tôi chỉ là người dùng của cụm, vì vậy tôi chỉ có thể làm việc xung quanh nó chứ không thể khắc phục nó.)
Tôi có thể xây dựng một phiên bản chương trình không đọc các tệp cấu hình (hoặc không có tùy chọn dòng lệnh) để sử dụng hàng loạt, nhưng môi trường xây dựng của chương trình này được thiết kế kém và khó thiết lập. Tôi rất thích sử dụng các nhị phân được cài đặt thông qua trình quản lý gói của hệ thống.
Làm cách nào tôi có thể lừa các trường hợp cụ thể của chương trình này để giả vờ các tệp cấu hình của tôi không tồn tại (mà không sửa đổi chương trình)? Tôi hy vọng cho một gói của mẫu pretendfiledoesntexist ~/.config/myprogram -- myprogram --various-options...
, nhưng tôi mở cho các giải pháp khác.
LD_PRELOAD
cái móc. Điều đó dễ dàng hơn (bạn có thể thực hiện điều đó trong một hoặc hai giờ, nếu bạn biết C) so với phương án thay thế ptrace
. Bạn cũng có thể sử dụng fakechroot để làm điều này (đó là LD_PRELOAD, tôi tin vậy).