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.
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
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