Hoe de map te vinden waar een bash-script zich bevindt vanuit het script

Hoe De Map Te Vinden Waar Een Bash Script Zich Bevindt Vanuit Het Script



Bij het werken met bash-scripts is het handig om de scriptlocatie te kennen. Dit kan met name handig zijn bij het werken met relatieve bestandspaden of bij het uitvoeren van andere scripts of opdrachten vanuit het script. In dit artikel zullen we een paar verschillende manieren bekijken om de map van een bash-script te bepalen vanuit het script zelf.

Hoe de map te vinden waar een bash-script zich bevindt vanuit het script

Tijdens bash-scripting heeft u mogelijk de locatie van het script nodig om verschillende taken te automatiseren. Er zijn twee soorten paden in Linux:

  • Familie pad: Relatief is de huidige werkdirectory.
  • Absoluut pad: Dit is het volledige pad van de directory en bestanden.

Een van de meest gebruikelijke manieren om de locatie van een bash-script te bepalen, is door het pwd commando. De pwd commando ( werkmap afdrukken) toont de huidige map.







Dus in veel situaties gewoon gebruiken pwd commando werkt niet omdat het alleen het pad geeft van de momenteel werkende directory.



Als het script bijvoorbeeld in de Downloaden directory en wordt uitgevoerd vanuit de Bureaublad dan bevat de uitvoer de /home/usr/Desktop niet de locatie van het bash-scriptbestand dat is /home/usr/Downloads .



Deze tutorial gaat over het ophalen van het pad van de map waarin het bash-scriptbestand zich bevindt vanuit het script.





Hoe mappad te krijgen waar het Bash-scriptbestand zich bevindt

Een andere manier om de directory van een Bash-script te bepalen, is door het naam commando. De naam opdracht neemt een bestandspad als argument en retourneert het directorygedeelte van het pad.

Gebruiken naam opdracht om de directory van een script te bepalen, zou u de opdracht aanroepen met het pad tot de laatste niet-slash-componenten naar het script als argument.



Voor meer informatie over naam voer de volgende opdrachten uit in de terminal:

$ man naam

Alleen naam zal niet werken, we hebben een andere opdracht nodig leeslink . De leeslink commando print loste de symbolische link op. Krijg meer informatie over deze opdracht door het volgende uit te voeren:

$ man leeslink

Nu, maak een script :

$ sudo nano mijnScript.sh

En typ:

#!/bin/bash

echo 'Het bash-scriptpad is $(dirname -- '$(leeslink -f – '$0') ' ; ) ';

Gebruik om het script uit te voeren:

$ bashen mijnScript.sh

Laten we de map wijzigen en kijken wat de uitvoer is:

Opmerking: In één geval zal het bovenstaande script niet werken als het bestand afkomstig is in plaats van wordt uitgevoerd, zoals te zien is in de volgende uitvoer:

De uitvoer is /home/sam/Desktop terwijl het scriptbestand aanwezig is in het /thuis/sam map.

Conclusie

Concluderend zijn er meerdere manieren om de directory van een bash-script te bepalen vanuit het script zelf. De naam samen met leeslink hulpprogramma kan worden gebruikt om de map van een script te bepalen. Echter gewoon gebruiken pwd commando werkt niet omdat het alleen de momenteel werkende directory geeft.