Pokud nainstaluji binární soubor s nestandardní předponou, např. /opt/bin/foo
, který potřebuje nějaké statické soubory z /opt/share/foo
, jak je najde? Použití zpětných odkazů vzhledem ke spustitelnému souboru (../share/foo
)? Pevně zakódováno v době kompilace?
Co je idiomatické způsob, jak aplikace zpracovat variabilní předponu instalace? Měly by mít všechny adresáře předponu? (a co /var
?)
Přijatá odpověď:
Je běžné, že se takové odkazy napevno zakódují v době kompilace a možná je k dispozici možnost příkazového řádku nebo proměnná prostředí, která přepíše výchozí nastavení v době kompilace. Často si program pamatuje pouze umístění jednoho konfiguračního souboru (obvykle pod /etc
), kde lze přepsat jakékoli výchozí nastavení v době kompilace. Tento přístup dává největší smysl pro software s otevřeným zdrojovým kódem, který je kompilován stejnými lidmi, kteří vytvářejí operační systém, jako součást distribuce Linuxu nebo portů BSD.
U aplikací distribuovaných v binární formě je obvyklým přístupem najít binární aplikaci od jejího nultého argumentu. Podle konvence nultý argument pro execve
(tj. argv[0]
) je cesta k binárnímu systému (je na volajícím, často shellu, aby dodržel konvenci). Pokud argv[0]
neobsahuje žádné /
, aplikace by měla provést $PATH
vyhledat to.