GNU/Linux >> Znalost Linux >  >> Linux

Získat úplnou cestu ze skriptu Bash?

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ě…


Linux
  1. Zabránění souběžnému spuštění bash skriptu

  2. Proč nemohu použít CD ve skriptu Bash?

  3. Rsync Neznámá možnost ze spuštění skriptu Bash?

  1. Spusťte bash skript z adresy URL

  2. Jak najít úplnou cestu k programu C++ Linux zevnitř?

  3. Jak získám absolutní adresář souboru v bash?

  1. Přidejte bash skript do cesty

  2. Na příkazovém řádku bash zobrazit pouze název aktuálního adresáře (ne úplnou cestu).

  3. Jak spustit bash skript?