Ayarlarını saklayan bir programım var. ~/.config/myprogram
hem etkileşimli olarak hem de toplu kuyruklama sistemiyle kullanıyorum. Etkileşimli olarak çalıştırırken, bu programın yapılandırma dosyalarımı kullanmasını istiyorum (ve kullanıyor). Ancak toplu modda çalışırken, tüm ilgili ayarların üzerine yazacak komut satırı seçeneklerini belirttiğim için yapılandırma dosyaları gerekli değildir. Ayrıca, ağ üzerinden yapılandırma dosyalarına erişmek, programın başlangıç süresini birkaç saniye artırır; dosyalar yoksa, program çok daha hızlı başlar (her iş yalnızca bir dakika sürdüğü için, bunun toplu iş çıktısı üzerinde önemli bir etkisi vardır). Ancak programı etkileşimli olarak da kullandığım için, yapılandırma dosyalarımı her zaman taşımak / silmek istemiyorum. Toplu işlerimin kümede ne zaman planlanacağına bağlı olarak (diğer kullanıcıların kullanımına bağlı olarak),
(Bir kenara: bu ağ dosyası performansı çok yavaş bir hata olabilir, ama ben sadece küme kullanıcısıyım, bu yüzden sadece üzerinde çalışabilirim, düzeltemem.)
Toplu kullanım için yapılandırma dosyalarını okumayan (veya bir komut satırı seçeneğine sahip olmayan) programın bir sürümünü oluşturabilirim, ancak bu programın oluşturma ortamı kötü tasarlanmış ve ayarlanması zor. Sistemimin paket yöneticisi aracılığıyla yüklenen ikilileri kullanmayı tercih ederim.
Bu programın belirli örneklerini yapılandırma dosyalarımı yokmuş gibi (programda değişiklik yapmadan) nasıl kandırabilirim? Formun bir paketleyicisini umuyorum pretendfiledoesntexist ~/.config/myprogram -- myprogram --various-options...
, ancak diğer çözümlere açığım.
LD_PRELOAD
kanca kullanabilirsiniz . Bu daha kolay (C'yi biliyorsanız, bir veya iki saat içinde uygulayabilirsiniz) alternatif olandan ptrace
. Ayrıca muhtemelen bunu yapmak için fakechroot kullanabilirsiniz (LD_PRELOAD, sanırım).