Hvordan finne katalogen der et Bash-skript er plassert fra skriptet

Hvordan Finne Katalogen Der Et Bash Skript Er Plassert Fra Skriptet



Når du arbeider med bash-skript, er det nyttig å vite hvor skriptet befinner seg. Dette kan være spesielt nyttig når du arbeider med relative filbaner, eller når du prøver å utføre andre skript eller kommandoer fra skriptet. I denne artikkelen skal vi ta en titt på noen forskjellige måter å bestemme katalogen til et bash-skript fra selve skriptet.

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 dirname

Bare 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 lesekobling

Nå, lage et skript :

$ sudo nano myScript.sh

Og skriv:

#!/bin/bash

ekko '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.