Jak najít adresář, kde je umístěn Bash skript ze skriptu
Během bash skriptování můžete vyžadovat umístění skriptu pro automatizaci různých úloh. V Linuxu existují dva typy cest:
- Cesta příbuzných: Relativní je aktuální pracovní adresář.
- Absolutní cesta: Toto je úplná cesta k adresáři a souborům.
Jedním z nejběžnějších způsobů, jak určit umístění bash skriptu, je použití pwd příkaz. The pwd příkaz ( tisknout pracovní adresář) zobrazí aktuální adresář.
Takže v mnoha situacích jednoduše pomocí pwd příkaz nefunguje, protože poskytuje pouze cestu k aktuálně pracovnímu adresáři.
Například, pokud je skript v Stahování a spouští se z adresáře plocha počítače pak výstup bude obsahovat /home/usr/Desktop nikoli umístění souboru skriptu bash, který je /home/usr/Downloads .
Tento tutoriál je o získání cesty k adresáři, ve kterém je umístěn soubor skriptu bash ze skriptu.
Jak získat cestu k adresáři, kde se nachází soubor skriptu Bash
Dalším způsobem, jak určit adresář Bash skriptu, je použít dirname příkaz. The dirname příkaz bere cestu k souboru jako argument a vrací adresářovou část cesty.
Použít dirname příkaz k určení adresáře skriptu, zavolali byste příkaz s cestou k posledním nelomítkovým komponentám ke skriptu jako argument.
Pro více podrobností o dirname spusťte v terminálu následující příkazy:
$ muž dirnamePouze dirname nebude fungovat, potřebujeme další příkaz, který je readlink . The readlink příkaz print vyřešil symbolický odkaz. Další informace o tomto příkazu získáte spuštěním:
$ muž readlinkNyní, vytvořit skript :
$ sudo nano myScript.shA napište:
#!/bin/bashecho 'Cesta bash skriptu je $(dirname -- '$(readlink -f - '$0') ' ; ) ';
Pro spuštění skriptu použijte:
$ bash myScript.sh
Změníme adresář a uvidíme, jaký je výstup:
Poznámka: V jednom případě výše uvedený skript nebude fungovat, pokud je soubor vytvořen jako zdroj namísto spuštění, jak je vidět v následujícím výstupu:
Výstup je /home/sam/Desktop zatímco soubor skriptu je přítomen v /domů/sam adresář.
Závěr
Závěrem, existuje několik způsobů, jak určit adresář bash skriptu ze samotného skriptu. The dirname spolu s readlink nástroj lze použít k určení adresáře skriptu. Nicméně jednoduše pomocí pwd příkaz nefunguje, protože poskytuje pouze aktuálně fungující adresář.