Paano Hanapin ang Direktoryo Kung saan Matatagpuan ang isang Bash Script mula sa loob ng Script

Paano Hanapin Ang Direktoryo Kung Saan Matatagpuan Ang Isang Bash Script Mula Sa Loob Ng Script



Kapag nagtatrabaho sa mga script ng bash, kapaki-pakinabang na malaman ang lokasyon ng script. Maaari itong maging partikular na kapaki-pakinabang kapag nagtatrabaho sa mga kaugnay na landas ng file, o kapag sinusubukang magsagawa ng iba pang mga script o command mula sa loob ng script. Sa artikulong ito, titingnan natin ang ilang iba't ibang paraan upang matukoy ang direktoryo ng isang script ng bash mula sa loob mismo ng script.

Paano Hanapin ang Direktoryo Kung Saan Matatagpuan ang isang Bash Script mula sa loob ng Script

Habang nagba-bash script, maaaring kailanganin mo ang lokasyon ng script upang i-automate ang iba't ibang gawain. Mayroong dalawang uri ng mga landas sa Linux:

  • Landas ng Kamag-anak: Ang kamag-anak ay ang kasalukuyang gumaganang direktoryo.
  • Ganap na Landas: Ito ang kumpletong landas ng direktoryo at mga file.

Ang isa sa mga pinakakaraniwang paraan upang matukoy ang lokasyon ng isang script ng bash ay ang paggamit ng pwd utos. Ang pwd utos ( print working directory) ipapakita ang kasalukuyang direktoryo.







Kaya, sa maraming mga sitwasyon sa simpleng paggamit pwd Ang command ay hindi gumagana dahil nagbibigay lamang ito ng landas ng kasalukuyang gumaganang direktoryo.



Halimbawa, kung ang script ay nasa Mga download direktoryo at pinaandar mula sa Desktop pagkatapos ay maglalaman ang output ng /home/usr/Desktop hindi ang lokasyon ng bash script file na iyon /home/usr/Downloads .



Ang tutorial na ito ay tungkol sa pagkuha ng path ng direktoryo kung saan matatagpuan ang bash script file mula sa loob ng script.





Paano Kumuha ng Direktoryo na Path Kung Saan Matatagpuan ang Bash Script File

Ang isa pang paraan upang matukoy ang direktoryo ng isang Bash script ay ang paggamit ng diname utos. Ang diname Ang utos ay kumukuha ng landas ng file bilang argumento at ibinabalik ang bahagi ng direktoryo ng landas.

Upang gamitin diname command upang matukoy ang direktoryo ng isang script, tatawagin mo ang command na may path hanggang sa huling mga non-slash na bahagi sa script bilang argumento.



Para sa higit pang mga detalye tungkol sa diname isagawa ang sumusunod na mga utos sa terminal:

$ lalaki diname

Tanging diname ay hindi gagana, kailangan namin ng isa pang utos na readlink . Ang readlink Nalutas ng command print ang simbolikong link. Kumuha ng higit pang impormasyon tungkol sa utos na ito sa pamamagitan ng pagpapatakbo:

$ lalaki readlink

ngayon, gumawa ng script :

$ sudo nano myScript.sh

At i-type ang:

#!/bin/bash

echo 'Ang landas ng script ng bash ay $(dirname -- '$(readlink -f – '$0') ' ; ) ';

Upang patakbuhin ang script, gamitin ang:

$ bash myScript.sh

Baguhin natin ang direktoryo at tingnan kung ano ang output:

Tandaan: Sa isang kaso ang script sa itaas ay hindi gagana kung ang file ay pinanggalingan sa halip na isagawa tulad ng makikita sa sumusunod na output:

Ang output ay /home/sam/Desktop samantalang ang script file ay naroroon sa /home/sam direktoryo.

Konklusyon

Sa konklusyon, mayroong maraming mga paraan upang matukoy ang direktoryo ng isang script ng bash mula sa loob ng script mismo. Ang diname kasama ni readlink utility ay maaaring gamitin upang matukoy ang direktoryo ng isang script. Gayunpaman, ginagamit lamang pwd Ang command ay hindi gumagana dahil nagbibigay lamang ito ng kasalukuyang gumaganang direktoryo.