Koyi Bambanci Tsakanin Noma da Namiji a cikin Bash


Babban abin da ke cikin wannan labarin shine fahimtar abin da ke faruwa lokacin da kake gudanar da rubutun da tushen rubutun a cikin bash. Na farko, za mu fahimci yadda ake gabatar da shirin a fili lokacin da kuke kiran rubutun ta hanyoyi daban-daban.

NOTE: ƙirƙirar rubutun tare da kari ba komai. Rubutun zai gudana da kyau koda ba tare da kari ba.

Asali, kowane rubutu yana farawa da layin da ake kira shebang (#!). Za a fassara alamar Hash a cikin bash a matsayin tsokaci amma shebang yana da ma’ana ta musamman. Yana gayawa bash don gabatar da shirin a duk fassarar da kuka ambata a cikin shebang.

A ƙasa akwai shirin samfurin kuma ina bayyana bash a matsayin mai fassara.

$ cat >> Hello_World.sh
#!/usr/bin/env bash
echo "Hello world"

$ chmod +x Hello_world.sh

Yanzu don gudanar da rubutun, zaka iya yin shi ta hanyoyi biyu.

  • Yi amfani da hanyar dangi don kiran rubutun. Matsar zuwa kundin adireshi inda rubutun yake kuma gudana ./Hello_world.sh.
  • Yi amfani da cikakkiyar hanya don kiran rubutun. Daga ko'ina cikin tsarin fayil ɗin rubuta cikakken hanya zuwa rubutun.

$ ./Hello_world.sh
$ pwd
$ /home/karthick/Hello_world

Yanzu bari mu ga abin da ya faru lokacin da kuke ƙoƙarin ƙaddamar da shirinku ba tare da shebang ba. Ba tare da shebang ba, za a gabatar da shirin ga duk abin da kuke gudana tare da shi, A halin da nake, shi ne Bash (/ bin/bash).

Bari in nuna misali. Ina kirkirar rubutun python ba tare da shebang ba kuma lokacin da na kira shirin, bash bai san cewa yakamata ya gabatar da wannan shirin ga mai fassarar Python ba maimakon haka zai gudanar da shirin a cikin kwalin da yake ciki.

$ cat > run-py.py
echo $SHELL
print("Hello world")

$ chmod +x run-py.py
$ ./run-py.py

A wannan yanayin, zaku iya kiran shirin ta ambaton wacce fassarar ya kamata a gabatar dashi ko kawai ƙara layin shebang wanda koyaushe ana ba da shawarar.

# which python3
$(which python3) /home/karthick/run_py.py

Yanzu kun san yadda ake kiran rubutun, mataki na gaba zai zama fahimtar abin da ke faruwa yayin da muke kiran rubutun. Lokacin da kuka kira rubutun kamar yadda aka nuna a cikin misalan da ke sama zai haifar da tsarin yaro (forking) kuma za a ƙaddamar da rubutun ga tsarin yaro. Na gudanar da samfurin samfuri wanda zaiyi amfani da wannan umarni mai zuwa kuma ya nuna an ƙaddamar da rubutun ga tsarin yaro.

$ ps -ef --forest | grep -i bash

Za'a iya samun matakai na yara da yawa azaman ɓangaren rubutun kuma wannan ya dogara da lambar mu. Ya zama abin lura cewa masu canjin yanayi da aka kirkiresu ta hanyar biyan kudi za'a sauke su da zarar sun gama. Tsarin yara na iya samun damar masu canji waɗanda tsarin iyaye ya ƙirƙira ta hanyar fitar da su. Amma tsarin iyaye ba zai iya samun damar masu canji da tsarin yaro ya kirkira ba.

Dubi abubuwan da ke ƙasa don ƙarin fahimta game da yadda masu canji ke aiki da kuma yadda za a fitar da masu canji.

  • Fahimta da Rubuta 'Linux Variables' a cikin Shell Scripting
  • Koyi Bambanci Tsakanin $$da $BASHPID a cikin Bash

Samun Rubutun

\ "Source" wani harsashi ne wanda aka gina shi wanda yake karanta fayil ɗin da aka wuce azaman mahawara zuwa gare shi kuma yana gudanar da lambar a cikin yanayin kwalliyar yanzu. Sha'anin amfani da ya dace wanda kuke amfani dashi mafi yawa yana gyaggyara tsarinku a .bashrc ko .bash_profile da sake loda canje-canje ta amfani da tushen tushe.

$ type -a source

Akwai hanyoyi guda biyu don aiwatar da umarnin tushe. Kuna iya zaɓar kowa daga jerin kalmomi guda biyu kuma zaɓi ne na kai.

$ source FILE_NAME [ARGUMENTS]
$ . FILE_NAME [ARGUMENTS]

Bari in nuna yadda asalin take aiki. Zan kirkiro rubutun harsashi biyu. Rubutun farko (Module.sh) zai riƙe wasu masu canji da ayyuka. Rubutu na biyu (Main.sh) zai buga mai canzawa kuma ya kira aikin.

Module Fayil.sh.

#!/usr/bin/env bash

VAR1=$(echo "Welcome to $1")

function f1(){
  echo “Function f1 is called”
}

Babban fayil.sh.

#!/usr/bin/env bash

echo $VAR1
f1

Saita izinin aiwatarwa don rubutun kuma kira babban rubutun\"main.sh". Yanzu, wannan rubutun zaiyi ƙoƙarin neman aikin f1 da canji VAR1 a halin yanzu Yanayin harsashi kuma zai fadi tare da umarnin da ba'a samo ba.

$ bash main.sh

Yanzu bari muyi amfani da umarnin tushe a cikin rubutun wanda zai loda masu canjin da ayyukanda suke cikin yanayin harsashi na yanzu kuma hakan zai iya samun damar ta\"main.sh".

Module Fayil.sh.

#!/usr/bin/env bash

VAR1=$(echo "Welcome to $1")

function f1(){
  echo "Function f1 is called"
}

Babban fayil.sh.

#!/usr/bin/env bash

source module.sh Tecmint
echo $VAR1
f1

Yanzu sake kunna rubutun ka gani.

$ bash main.sh

Asalin yana da matukar amfani a cikin bash don bin tsarin shirye-shiryen kirkirar kirkirar rubutun mu. Zamu iya karya lambar mu a cikin kananan kayayyaki kuma ana iya amfani da mu a cikin shirye-shirye da yawa. A cikin wadannan hanyoyi, zamu iya bin ƙa'idar DRY (Kar a maimaita kanku).

Shi ke nan ga wannan labarin. Munyi takaitaccen bayani game da banbanci tsakanin hadawa da token a bash. Tafi labarin kuma ka ba da amsa mai mahimmanci tare da mu.