Cum să găsiți directorul în care se află un script Bash din interiorul scriptului

Cum Sa Gasiti Directorul In Care Se Afla Un Script Bash Din Interiorul Scriptului



Când lucrați cu scripturi bash, este util să cunoașteți locația scriptului. Acest lucru poate fi util în special atunci când lucrați cu căi de fișiere relative sau când încercați să executați alte scripturi sau comenzi din interiorul scriptului. În acest articol, vom arunca o privire la câteva moduri diferite de a determina directorul unui script bash din scriptul în sine.

Cum să găsiți directorul în care se află un script Bash din interiorul scriptului

În timpul scripturilor bash, este posibil să aveți nevoie de locația scriptului pentru a automatiza diverse sarcini. Există două tipuri de căi în Linux:

  • Calea rudelor: Relativ este directorul de lucru curent.
  • Calea absolută: Aceasta este calea completă a directorului și fișierelor.

Una dintre cele mai comune modalități de a determina locația unui script bash este folosirea pwd comanda. The pwd comanda ( tipăriți directorul de lucru) va afișa directorul curent.







Deci, în multe situații pur și simplu folosind pwd comanda nu funcționează deoarece oferă doar calea directorului de lucru curent.



De exemplu, dacă scriptul este în Descărcări director și fiind executat din Desktop atunci ieșirea va conține /home/usr/Desktop nu locația fișierului script bash, adică /home/usr/Descărcări .



Acest tutorial este despre obținerea căii directorului în care se află fișierul script bash din interiorul scriptului.





Cum să obțineți calea directorului unde se află fișierul script Bash

O altă modalitate de a determina directorul unui script Bash este să utilizați dirname comanda. The dirname comanda preia o cale de fișier ca argument și returnează porțiunea de director a căii.

A folosi dirname pentru a determina directorul unui script, ați apela comanda cu calea până la ultimele componente fără bară oblică către script ca argument.



Pentru mai multe detalii despre dirname executați următoarele comenzi în terminal:

$ om dirname

Numai dirname nu va funcționa, avem nevoie de o altă comandă, adică readlink . The readlink comanda print a rezolvat legătura simbolică. Obțineți mai multe informații despre această comandă rulând:

$ om readlink

Acum, creați un script :

$ sudo nano myScript.sh

Și tastați:

#!/bin/bash

ecou „Calea scriptului bash este $(dirname -- '$(readlink -f – '$0') ' ; ) ';

Pentru a rula scriptul utilizați:

$ bash myScript.sh

Să schimbăm directorul și să vedem care este rezultatul:

Notă: Într-un caz, scriptul de mai sus nu va funcționa dacă fișierul este sursă în loc să fie executat, așa cum se poate vedea în următoarea ieșire:

Ieșirea este /home/sam/Desktop întrucât fișierul script este prezent în fișierul /acasă/sam director.

Concluzie

În concluzie, există mai multe moduri de a determina directorul unui script bash din scriptul în sine. The dirname împreună cu readlink utilitarul poate fi folosit pentru a determina directorul unui script. Cu toate acestea, pur și simplu folosind pwd comanda nu funcționează deoarece oferă doar directorul de lucru curent.