Kako poiskati imenik, kjer se nahaja skript Bash znotraj skripta

Kako Poiskati Imenik Kjer Se Nahaja Skript Bash Znotraj Skripta



Ko delate s skripti bash, je koristno poznati lokacijo skripta. To je lahko še posebej koristno pri delu z relativnimi potmi datotek ali ko poskušate izvesti druge skripte ali ukaze znotraj skripta. V tem članku si bomo ogledali nekaj različnih načinov za določitev imenika skripta bash znotraj samega skripta.

Kako poiskati imenik, kjer se nahaja skript Bash znotraj skripta

Med izvajanjem skripta bash boste morda zahtevali lokacijo skripta za avtomatizacijo različnih opravil. V Linuxu obstajata dve vrsti poti:

  • Pot sorodnikov: Relativno je trenutni delovni imenik.
  • Absolutna pot: To je celotna pot do imenika in datotek.

Eden najpogostejših načinov za določitev lokacije skripta bash je uporaba pwd ukaz. The pwd ukaz ( natisni delovni imenik) bo prikazal trenutni imenik.







Torej, v mnogih situacijah preprosto z uporabo pwd ukaz ne deluje, saj poda le pot do trenutno delujočega imenika.



Na primer, če je scenarij v Prenosi imenik in se izvaja iz Namizje potem bo izhod vseboval /home/usr/Desktop ne lokacija skriptne datoteke bash /home/usr/Prenosi .



Ta vadnica govori o pridobivanju poti do imenika, v katerem se nahaja datoteka skripta bash, znotraj skripta.





Kako pridobiti pot imenika, kjer se nahaja skriptna datoteka Bash

Drug način za določitev imenika skripta Bash je uporaba dirname ukaz. The dirname ukaz vzame pot datoteke kot argument in vrne imeniški del poti.

Uporabiti dirname za določitev imenika skripta, bi poklicali ukaz s potjo do zadnje komponente skripta brez poševnice kot argumenta.



Za več podrobnosti o dirname v terminalu izvedite naslednje ukaze:

$ moški dirname

Samo dirname ne bo delovalo, potrebujemo drug ukaz, ki je preberite povezavo . The preberite povezavo ukaz print je razrešil simbolno povezavo. Za več informacij o tem ukazu zaženite:

$ moški preberite povezavo

zdaj, ustvarite skript :

$ sudo nano myScript.sh

In vnesite:

#!/bin/bash

odmev 'Pot skripta bash je $(dirname -- '$(readlink -f – '$0') ' ; ) ';

Za zagon skripta uporabite:

$ bash myScript.sh

Spremenimo imenik in poglejmo, kaj je rezultat:

Opomba: V enem primeru zgornji skript ne bo deloval, če je datoteka pridobljena namesto izvajanja, kot je razvidno iz naslednjega izhoda:

Izhod je /home/sam/Desktop medtem ko je skriptna datoteka prisotna v /domov/sam imenik.

Zaključek

Skratka, obstaja več načinov za določitev imenika skripta bash znotraj samega skripta. The dirname skupaj z preberite povezavo pripomoček lahko uporabite za določitev imenika skripta. Vendar preprosto uporabo pwd ukaz ne deluje, saj poda le trenutno delujoč imenik.