Hvordan finne katalogen der et Bash-skript er plassert fra skriptet
Mens du bash-skripter kan du kreve plasseringen av skriptet for å automatisere ulike oppgaver. Det er to typer baner i Linux:
- Pårørendes bane: Relativ er gjeldende arbeidskatalog.
- Absolutt vei: Dette er den komplette banen til katalogen og filene.
En av de vanligste måtene å finne plasseringen til et bash-skript er å bruke pwd kommando. De pwd kommando ( skrive ut arbeidskatalog) vil vise gjeldende katalog.
Så, i mange situasjoner bare å bruke pwd kommandoen fungerer ikke siden den bare gir banen til den gjeldende katalogen.
For eksempel, hvis skriptet er i Nedlastinger katalogen og blir utført fra Skrivebord da vil utgangen inneholde /home/usr/Desktop ikke plasseringen av bash-skriptfilen altså /home/usr/Nedlastinger .
Denne opplæringen handler om å finne banen til katalogen der bash-skriptfilen er plassert fra skriptet.
Hvordan få katalogbane der Bash-skriptfilen er plassert
En annen måte å finne katalogen til et Bash-skript på er å bruke dirname kommando. De dirname kommandoen tar en filbane som et argument og returnerer katalogdelen av banen.
Å bruke dirname kommando for å bestemme katalogen til et skript, vil du kalle kommandoen med banen til de siste ikke-skrå komponentene til skriptet som argument.
For mer informasjon om dirname kjør følgende kommandoer i terminalen:
$ Mann dirnameBare dirname vil ikke fungere, vi trenger en annen kommando som er lesekobling . De lesekobling kommando print løste den symbolske lenken. Få mer informasjon om denne kommandoen ved å kjøre:
$ Mann lesekoblingNå, lage et skript :
$ sudo nano myScript.shOg skriv:
#!/bin/bashekko 'Bash script banen er $(dirname -- '$(readlink -f – '$0') ' ; ) ';
For å kjøre skriptet, bruk:
$ bash myScript.sh
La oss endre katalogen og se hva som er utgangen:
Merk: I ett tilfelle vil skriptet ovenfor ikke fungere hvis filen er hentet i stedet for å kjøre, slik den kan sees i følgende utdata:
Utgangen er /home/sam/Desktop mens skriptfilen finnes i /hjem/sam katalog.
Konklusjon
Avslutningsvis er det flere måter å bestemme katalogen til et bash-skript fra selve skriptet. De dirname sammen med lesekobling verktøyet kan brukes til å bestemme katalogen til et skript. Men bare å bruke pwd kommandoen fungerer ikke da den bare gir den gjeldende katalogen.