Mám bash skript, který pracuje s relativními cestami. Musí mít pracovní adresář, který se rovná adresáři, ve kterém je skript uložen. Funguje to dobře, pokud jej spustím z výzvy, protože nejprve mohu cd do adresáře skriptu. Když však vytvořím symbolický odkaz na skript v /etc/cron.hourly, skript se přeruší.
Potřebuji způsob, jak přimět bash skript změnit adresář na adresář, ve kterém je skript uložen. Zatím se mi to však nedaří. Existuje snadný způsob, jak to udělat, i když je skript volán z cronu prostřednictvím symbolického odkazu?
Přijatá odpověď:
Měli byste to umět.
- Parametr $0 se rozbalí na celou cestu (včetně názvu) skriptu, jak byl vyvolán.
- Vestavěná funkce shellu test (nebo [ ] ) může otestovat, zda je cesta symbolickým odkazem pomocí -L
ls -l
, pokud je aplikován na symbolický odkaz, poskytne jeden řádek výstupu se skutečnou cestou jako posledním polem.
To stačí k tomu, abyste zjistili umístění zdroje. Samozřejmě to může být symbolický odkaz, který by vyžadoval, abyste to udělali rekurzivně…
Malý levný *nix box?
Linux – Ztratím soubory, když vyprázdním mezipaměť (echo 3> /proc/sys/vm/drop_caches)?