Rith Bash go mion

Má fuair tú an leathanach seo i gcuardach, is dócha go bhfuil tú ag iarraidh fadhb éigin a réiteach le bash a rith.

B'fhéidir nach bhfuil do thimpeallacht bash ag socrú athróg timpeallachta agus nach dtuigeann tú cén fáth. B'fhéidir go bhfuil rud éigin greamaithe agat i gcomhaid nó i bpróifílí tosaithe bash éagsúla nó i ngach comhad go randamach go dtí gur oibrigh sé.

In aon chás, is é pointe an nóta seo ná an nós imeachta maidir le tosú bash a leagan amach chomh simplí agus is féidir ionas gur féidir leat déileáil le fadhbanna.

Léaráid

Déanann an tsreabhchairt seo achoimre ar na próisis go léir agus bash á rith.

Rith Bash go mion

Anois, déanaimis breathnú níos géire ar gach cuid.

Shell Logáil isteach?

Ar dtús ní mór duit a roghnú cibé an bhfuil tú sa bhlaosc logáil isteach nó nach bhfuil.

Is é an bhlaosc logála isteach an chéad bhlaosc a chuireann tú isteach nuair a logálann tú isteach le haghaidh seisiún idirghníomhach. Ní theastaíonn ainm úsáideora agus pasfhocal don bhlaosc logáil isteach. Is féidir leat iallach a chur ar an bhlaosc logáil isteach tosú trí bhratach a chur leis --login nuair a ghlaoitear air bash, mar shampla:

bash --logáil isteach

Socraíonn an bhlaosc logáil isteach an bunthimpeallacht nuair a thosaíonn tú ar an bhlaosc bash ar dtús.

Idirghníomhach?

Ansin socraíonn tú an bhfuil an bhlaosc idirghníomhach nó nach bhfuil.

Is féidir é seo a sheiceáil trí láithreacht na hathróige PS1 (suiteálann sé an fheidhm ionchuir ordaithe):

má [ "${ PS1- }" ] ; ansin macalla idirghníomhach eile macalla neamh-idirghníomhach fi

Nó féach an bhfuil an rogha socraithe -i, ag baint úsáide as athróg fleiscín speisialta - i bash, mar shampla:

$ macalla$-

Má tá siombail san aschur i, ansin tá an bhlaosc idirghníomhach.

Sa bhlaosc logáil isteach?

Má tá tú i mblaosc logáil isteach, ansin lorgaíonn bash an comhad /etc/profile agus ritheann má tá sé ann.

Ansin cuardaigh aon cheann de na trí chomhad seo san ord seo a leanas:

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

Nuair a aimsíonn sé ceann, tosaíonn sé é agus scipeann sé na cinn eile.

I sliogán idirghníomhach?

Má tá tú i mblaosc neamh-logála isteach, glactar leis go raibh tú i mblaosc logáil isteach cheana féin, tá an timpeallacht cumraithe agus gheobhaidh tú oidhreacht.

Sa chás seo, déantar an dá chomhad seo a leanas a fhorghníomhú in ord, má tá siad ann:

/etc/bash.bashrc ~/.bashrc

Gan rogha?

Mura bhfuil tú i blaosc logáil isteach nó i blaosc idirghníomhach, beidh do thimpeallacht folamh go deimhin. Cruthaíonn sé seo go leor mearbhaill (féach thíos faoi phoist cron).

Sa chás seo breathnaíonn bash ar an athróg BASH_ENV do thimpeallacht agus cruthaíonn sé an comhad comhfhreagrach atá sonraithe ann.

Deacrachtaí Coiteann agus Rialacha Ordóg

poist cron

95% den am a dhéanaim dífhabhtú bash tosaithe is toisc nach bhfuil an post cron ag rith mar a bhíothas ag súil leis.

An tasc diabhal oibríonn go breá nuair a rithim é ar an líne ordaithe, ach teipeann air nuair a rithim é i crontab.

Anseo dhá chúis:

  • Níl poist Cron idirghníomhach.
  • Murab ionann agus scripteanna na n-orduithe, ní fhaigheann jab cron le hoidhreacht an timpeallacht bhlaosc.

Go hiondúil ní thabharfaidh tú faoi deara ná ní bheidh aon aird ort nach bhfuil script bhlaosc idirghníomhach toisc go dtagann an timpeallacht le hoidhreacht ón sliogán idirghníomhach. Ciallaíonn sé seo go bhfuil gach rud PATH и alias cumraithe mar a bheifeá ag súil leis.

Sin é an fáth go bhfuil sé riachtanach go minic sainiúil a shocrú PATH le haghaidh tasc cron mar seo:

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

Íoslódáil scripteanna ag glaoch ar a chéile

Fadhb choitianta eile is ea nuair a bhíonn scripteanna cumraithe trí dhearmad chun glaoch ar a chéile. Mar shampla, /etc/profile achomhairc chuig ~/.bashrc.

Tarlaíonn sé seo de ghnáth nuair a rinne duine iarracht earráid éigin a shocrú agus is cosúil go raibh gach rud ag obair. Ar an drochuair, nuair is gá duit na cineálacha éagsúla seisiún seo a scaradh, tagann fadhbanna nua chun cinn.

Íomhá Sandboxed Docker

Chun triail a bhaint as blaosc a rith, chruthaigh mé íomhá Docker is féidir a úsáid chun blaosc a rith i dtimpeallacht shlán a dhífhabhtú.

Seoladh:

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

Tá Dockerfile suite anseo.

Chun logáil isteach a bhrú agus blaosc logáil isteach a insamhail:

$ bash --login

Chun sraith athróg a thástáil BASH_ENV:

$ env | grep BASH_ENV

Le haghaidh dífhabhtaithe crontab cuirfear script shimplí i gcrích gach nóiméad (i /root/ascript):

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

Foinse: will.com

Add a comment