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 dinameTanging 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 readlinkngayon, gumawa ng script :
$ sudo nano myScript.shAt i-type ang:
#!/bin/bashecho '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.