Kuendesha Bash kwa undani

Ikiwa umepata ukurasa huu katika utafutaji, pengine unajaribu kutatua tatizo fulani kwa kuendesha bash.

Labda mazingira yako ya bash hayaweki kutofautisha kwa mazingira na hauelewi ni kwanini. Unaweza kuwa umeshikilia kitu kwenye faili tofauti za bash au wasifu au faili zote bila mpangilio hadi ifanye kazi.

Kwa hali yoyote, hatua ya noti hii ni kuweka utaratibu wa kuanza bash kwa urahisi iwezekanavyo ili uweze kukabiliana na matatizo.

Mchoro

Chati hii ya mtiririko ni muhtasari wa michakato yote wakati wa kuendesha bash.

Kuendesha Bash kwa undani

Sasa hebu tuangalie kwa karibu kila sehemu.

Je, ungependa kuingia kwenye Shell?

Kwanza unahitaji kuchagua ikiwa uko kwenye ganda la kuingia au la.

Gamba la kuingia ni ganda la kwanza unaloingiza unapoingia kwa kipindi shirikishi. Gamba la kuingia hauitaji jina la mtumiaji na nywila. Unaweza kulazimisha ganda la kuingia kuanza kwa kuongeza bendera --login alipoitwa bash, kwa mfano:

bash --ingia

Gamba la kuingia huweka mazingira ya msingi unapoanza kwanza ganda la bash.

Inaingiliana?

Kisha unaamua ikiwa ganda linaingiliana au la.

Hii inaweza kuchunguzwa kwa kuwepo kwa kutofautiana PS1 (inasanikisha kazi ya kuingiza amri):

ikiwa [ "${PS1-}" ]; kisha mwangwi mwingiliano mwingine mwangwi fi zisizo mwingiliano

Au angalia ikiwa chaguo limewekwa -i, kwa kutumia kitofautisho maalum cha hyphen - kwa bash, kwa mfano:

$mwangwi$-

Ikiwa kuna ishara katika pato i, basi ganda linaingiliana.

Kwenye ganda la kuingia?

Ikiwa uko kwenye ganda la kuingia, basi bash hutafuta faili /etc/profile na inaendesha ikiwa ipo.

Kisha hutafuta faili zozote kati ya hizi tatu kwa mpangilio ufuatao:

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

Inapopata moja, huianzisha na kuruka zingine.

Katika ganda linaloingiliana?

Ikiwa uko kwenye ganda lisiloingia, inachukuliwa kuwa tayari umekuwa kwenye ganda la kuingia, mazingira yameundwa na yatarithiwa.

Katika kesi hii, faili mbili zifuatazo zinatekelezwa kwa mpangilio, ikiwa zipo:

/etc/bash.bashrc ~/.bashrc

Hakuna chaguo?

Ikiwa hauko kwenye ganda la kuingia au ganda linaloingiliana, basi mazingira yako yatakuwa tupu. Hii husababisha machafuko mengi (tazama hapa chini kuhusu kazi za cron).

Katika kesi hii bash inaangalia kutofautisha BASH_ENV mazingira yako na huunda faili inayolingana iliyoainishwa hapo.

Ugumu wa Kawaida na Sheria za Thumb

kazi za cron

95% ya wakati ninatatua uanzishaji wa bash ni kwa sababu kazi ya cron haifanyi kazi kama inavyotarajiwa.

Kazi mbaya hii inafanya kazi vizuri ninapoiendesha kwenye safu ya amri, lakini inashindwa ninapoiendesha kwenye crontab.

Hapa sababu mbili:

  • Kazi za Cron haziingiliani.
  • Tofauti na maandishi ya safu ya amri, kazi za cron hazirithi mazingira ya ganda.

Kwa kawaida hutagundua au kujali kuwa hati ya ganda haiingiliani kwa sababu mazingira hurithi kutoka kwa ganda linaloingiliana. Hii ina maana kwamba kila kitu PATH ΠΈ alias imeundwa kama unavyotarajia.

Ndiyo maana mara nyingi ni muhimu kuweka maalum PATH kwa kazi ya cron kama hapa:

* * * * * PATH=${PATH}:/path/to/my/program/folda myprogram

Hati zinazoitana

Shida nyingine ya kawaida ni wakati hati zinasanidiwa kimakosa ili kupigiana simu. Kwa mfano, /etc/profile rufaa kwa ~/.bashrc.

Hii kawaida hufanyika wakati mtu alijaribu kurekebisha hitilafu fulani na kila kitu kilionekana kufanya kazi. Kwa bahati mbaya, wakati unahitaji kutenganisha aina hizi tofauti za vikao, matatizo mapya hutokea.

Picha ya Docker iliyo na mchanga

Ili kujaribu kuendesha ganda, niliunda picha ya Docker ambayo inaweza kutumika kutatua kuendesha ganda katika mazingira salama.

Uzinduzi:

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

Dockerfile iko hapa.

Ili kulazimisha kuingia na kuiga ganda la kuingia:

$ bash --login

Ili kujaribu seti ya anuwai BASH_ENV:

$ env | grep BASH_ENV

Kwa utatuzi crontab hati rahisi itatekelezwa kila dakika (in /root/ascript):

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

Chanzo: mapenzi.com

Kuongeza maoni