Gudun Bash daki-daki

Idan kun sami wannan shafin a cikin bincike, ƙila kuna ƙoƙarin warware wasu matsala tare da gudanar da bash.

Wataƙila yanayin bash ɗin ku baya saita canjin yanayi kuma ba ku fahimci dalilin ba. Wataƙila kun makale wani abu a cikin fayilolin boot ɗin bash daban-daban ko bayanan martaba ko duk fayiloli a bazuwar har sai ya yi aiki.

A kowane hali, ma'anar wannan bayanin shine tsara tsarin fara bash a sauƙaƙe kamar yadda zai yiwu don ku iya magance matsalolin.

Zane

Wannan ginshiƙi yana taƙaita duk matakai yayin gudanar da bash.

Gudun Bash daki-daki

Yanzu bari mu dubi kowane bangare.

Shiga Shell?

Da farko kuna buƙatar zaɓar ko kuna cikin harsashin shiga ko a'a.

Harsashin shiga shine harsashi na farko da kuka shigar lokacin da kuka shiga don zama mai mu'amala. Harsashin shiga baya buƙatar sunan mai amfani da kalmar sirri. Kuna iya tilasta harsashin shiga don farawa ta ƙara tuta --login lokacin da ake kira bash, alal misali:

bash --login

Harsashin shiga yana saita yanayin tushe lokacin da kuka fara fara bash harsashi.

Ma'amala?

Sa'an nan kuma ku ƙayyade ko harsashi yana hulɗa ko a'a.

Ana iya bincika wannan ta gaban mai canzawa PS1 (yana shigar da aikin shigar da umarni):

idan ["${PS1-}"]; sa'an nan echo m in ba haka ba zato ba tare da mu'amala fi

Ko duba idan an saita zaɓi -i, ta amfani da maɓalli na musamman - a cikin bash, misali:

$echo$-

Idan akwai alama a cikin fitarwa i, to harsashi yana hulɗa.

A cikin harsashi login?

Idan kuna cikin harsashin shiga, to bash yana neman fayil ɗin /etc/profile kuma yana gudana idan akwai.

Sannan bincika kowane ɗayan waɗannan fayiloli guda uku a cikin tsari mai zuwa:

~/.bash_profile ~/.bash_login ~/.profile

Idan ya sami daya, sai ya fara shi ya tsallake sauran.

A cikin harsashi mai mu'amala?

Idan kun kasance a cikin harsashi wanda ba a shiga ba, ana ɗauka cewa kun riga kun kasance a cikin harsashin shiga, an daidaita yanayin kuma za a gaji.

A wannan yanayin, ana aiwatar da fayiloli guda biyu masu zuwa, idan sun kasance:

/etc/bash.bashrc ~/.bashrc

Babu zabi?

Idan ba a cikin ko dai harsashi mai shiga ko harsashi mai mu'amala, to lallai muhallin ku zai zama fanko. Wannan yana haifar da rudani da yawa (duba ƙasa game da ayyukan cron).

A cikin wannan yanayin bash yana kallon mai canzawa BASH_ENV yanayin ku kuma ya ƙirƙiri daidai fayil ɗin da aka ƙayyade a wurin.

Matsalolin gama gari da Dokokin Babban Yatsa

cron jobs

95% na lokacin da na cire bash farawa saboda aikin cron baya gudana kamar yadda aka zata.

Wannan tsinannen aiki yana aiki lafiya lokacin da na kunna shi akan layin umarni, amma ya kasa lokacin da na kunna shi a cikin crontab.

Yana da dalilai guda biyu:

  • Ayyukan Cron ba su da ma'amala.
  • Ba kamar rubutun layin umarni ba, ayyukan cron ba su gaji yanayin harsashi ba.

Yawanci ba za ku lura ko ku kula cewa rubutun harsashi ba ya yin mu'amala saboda yanayin yana gado daga harsashi mai mu'amala. Wannan yana nufin cewa komai PATH и alias saita kamar yadda kuke tsammani.

Wannan shine dalilin da ya sa sau da yawa ya zama dole don saita takamaiman PATH don aikin cron kamar nan:

* * * * * HANYA = $ {PATH}: / hanya / zuwa / my / shirin / babban fayil myprogram

Rubutun suna kiran juna

Wata matsalar gama gari ita ce lokacin da aka yi kuskuren tsara rubutun don kiran juna. Misali, /etc/profile roko zuwa ~/.bashrc.

Wannan yawanci yana faruwa lokacin da wani yayi ƙoƙarin gyara wasu kuskure kuma komai yayi kama da aiki. Abin takaici, lokacin da kuke buƙatar raba waɗannan nau'ikan zama daban-daban, sabbin matsaloli suna tasowa.

Hoton Sandboxed Docker

Don yin gwaji tare da gudanar da harsashi, na ƙirƙiri hoton Docker wanda za a iya amfani da shi don gyara tafiyar da harsashi a cikin amintaccen muhalli.

Kaddamar:

$ docker run -n bs -d imiell/bash_startup
$ docker exec -ti bs bash

Dockerfile yana nan a nan.

Don tilasta shiga da kwaikwayi harsashin shiga:

$ bash --login

Don gwada saitin masu canji BASH_ENV:

$ env | grep BASH_ENV

Don gyara kuskure crontab za a aiwatar da rubutun mai sauƙi kowane minti (in /root/ascript):

$ crontab -l
$ cat /var/log/script.log

source: www.habr.com

Add a comment