Ukubaleka iBash ngokweenkcukacha

Ukuba ufumene eli phepha kuphendlo, mhlawumbi uzama ukusombulula ingxaki ethile ngokusebenzisa i-bash.

Mhlawumbi indawo yakho ye-bash ayimiseli ukuguquguquka kokusingqongileyo kwaye awusiqondi isizathu. Unokuba ubambe into kwiifayile ezahlukeneyo ze-bash okanye iinkangeleko okanye zonke iifayile ngokungakhethiyo ide isebenze.

Kwimeko nayiphi na into, inqaku lale nqaku kukubeka inkqubo yokuqalisa i-bash ngokulula kangangoko ukuze ukwazi ukujongana neengxaki.

Umzobo

Le tshati ishwankathela zonke iinkqubo xa uqhuba i-bash.

Ukubaleka iBash ngokweenkcukacha

Ngoku makhe sihlolisise inxalenye nganye.

Ngena kwi-Shell?

Okokuqala kufuneka ukhethe ukuba ukulo qokobhe lokungena okanye hayi.

Iqokobhe lokungena liqokobhe lokuqala olifakayo xa uloga ngeseshoni yonxibelelwano. Iqokobhe lokungena alifuni igama lomsebenzisi kunye negama lokugqitha. Unganyanzela iqokobhe lokungena ukuba liqale ngokongeza iflegi --login xa ebizwa bash, umzekelo:

bash --login

Iqokobhe lokungena licwangcisa imeko-bume yesiseko xa uqala iqokobhe le-bash.

Interactive?

Emva koko unquma ukuba iqokobhe liyasebenzisana okanye hayi.

Oku kunokujongwa kubukho benguqu PS1 (ihlohla umsebenzi wegalelo lomyalelo):

ukuba [ "${PS1-}" ]; emva koko i-echo interactive enye i-echo non-interactive fi

Okanye ubone ukuba ukhetho lusetiwe -i, usebenzisa umahluko okhethekileyo weqhagamshela - kwi-bash, umzekelo:

$echo$-

Ukuba kukho isimboli kwimveliso i, ngoko iqokobhe liyasebenzisana.

Kwiqokobhe lokungena?

Ukuba ukwiqokobhe lokungena, emva koko i-bash ijonge ifayile /etc/profile kwaye ibaleka ukuba ikhona.

Emva koko khangela nayiphi na kwezi fayile zintathu ngolu hlobo lulandelayo:

~/.bash_iprofayile ~/.bash_login ~/.iprofayile

Xa ifumene enye, iyayiqala ize izitsibe ezinye.

Kwiqokobhe elisebenzisanayo?

Ukuba ukwiqokobhe elingangeniyo, kucingelwa ukuba sele ukulo iqokobhe lokungena, imeko-bume iqwalaselwe kwaye iza kufunyanwa njengelifa.

Kule meko, ezi fayile zimbini zilandelayo zenziwa ngokulandelelana, ukuba zikhona:

/etc/bash.bashrc ~/.bashrc

Akukho khetho?

Ukuba awukho nokuba kwiqokobhe lokungena okanye iqokobhe elisebenzisanayo, ke okusingqongileyo kuya kuba nanto. Oku kubangela ukudideka okukhulu (jonga ngezantsi malunga nemisebenzi ye-cron).

Kule meko i-bash ijonge ukuguquguquka BASH_ENV imeko-bume yakho kwaye yenza ifayile ehambelanayo ekhankanyiweyo apho.

Ubunzima obuqhelekileyo kunye neMithetho yeThupha

imisebenzi yecron

I-95% yexesha ndilungisa i-bash yokuqalisa kungenxa yokuba umsebenzi we-cron awusebenzi njengoko kulindelekile.

Lo msebenzi unzima isebenza kakuhle xa ndiyiqhuba kumgca womyalelo, kodwa iyasilela xa ndiyiqhuba kwi-crontab.

kuyinto izizathu ezibini:

  • Imisebenzi yeCron ayisebenzi.
  • Ngokungafaniyo nezikripthi zelayini yomyalelo, imisebenzi yecron ayililifa imo engqongileyo yeqokobhe.

Ngokwesiqhelo awuzukuqaphela okanye ukhathale ukuba iskripthi seqokobhe asisebenzi kuba imeko-bume ifumana ilifa kwiqokobhe elisebenzisanayo. Oku kuthetha ukuba yonke into PATH ΠΈ alias iqwalaselwe njengoko unokulindela.

Yiyo loo nto kudla ngokuba yimfuneko ukuseta into ethile PATH ngomsebenzi wecron njengalapha:

* * * * * UMENDO=${INDLELA}:/indlela/ukuya/yam/inkqubo/ifolda myprogram

Izikripthi zifowunelana

Enye ingxaki eqhelekileyo kuxa izikripthi ziqwalaselwe ngempazamo ukubizana. Umzekelo, /etc/profile izibheno ku ~/.bashrc.

Oku kwenzeka rhoqo xa umntu ezama ukulungisa impazamo kwaye yonke into ibonakala isebenza. Ngelishwa, xa ufuna ukwahlula ezi ntlobo zahlukeneyo zeeseshini, kuvela iingxaki ezintsha.

Umfanekiso weSandboxed Docker

Ukuzama ukusebenzisa iqokobhe, ndenze umfanekiso weDocker onokuthi usetyenziswe ukulungisa iqokobhe kwindawo ekhuselekileyo.

Qalisa:

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

I-Dockerfile ikhona apha.

Ukunyanzela ukungena kunye nokulinganisa iqokobhe lokungena:

$ bash --login

Ukuvavanya uluhlu lwezinto eziguquguqukayo BASH_ENV:

$ env | grep BASH_ENV

Ukulungisa ingxaki crontab iskripthi esilula siya kuphunyezwa ngomzuzu ngamnye (in /root/ascript):

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

umthombo: www.habr.com

Yongeza izimvo