Ukugijima i-Bash ngokuningiliziwe

Uma uthole leli khasi ekusesheni, cishe uzama ukuxazulula inkinga ethile ngokusebenzisa i-bash.

Mhlawumbe indawo yakho ye-bash ayibeki ukuguquguquka kwemvelo futhi awuqondi ukuthi kungani. Kungenzeka ukuthi unamathisele okuthile kumafayela e-bash boot ahlukahlukene noma amaphrofayili noma wonke amafayela ngokungahleliwe aze asebenze.

Kunoma yikuphi, iphuzu laleli nothi ukubeka inqubo yokuqala i-bash kalula ngangokunokwenzeka ukuze ukwazi ukubhekana nezinkinga.

Umdwebo

Le flowchart ifingqa zonke izinqubo uma usebenzisa i-bash.

Ukugijima i-Bash ngokuningiliziwe

Manje ake sihlolisise ingxenye ngayinye.

Ngena ngemvume kuShell?

Okokuqala udinga ukukhetha ukuthi ukugobolondo lokungena noma cha.

Igobolondo lokungena liyigobolondo lokuqala olifakayo uma ungena ngeseshini esebenzisanayo. Igobolondo lokungena alidingi igama lomsebenzisi nephasiwedi. Ungaphoqa igobolondo lokungena ukuthi liqale ngokungeza ifulegi --login uma ebizwa bashisibonelo:

bash --login

Igobolondo lokungena lisetha indawo eyisisekelo lapho uqala igobolondo le-bash.

Iyasebenzisana?

Bese unquma ukuthi igobolondo liyasebenzisana noma cha.

Lokhu kungahlolwa ngokuba khona kokuguquguquka PS1 (ifaka umsebenzi wokufaka umyalo):

uma [ "${PS1-}" ]; bese enanela okusebenzisanayo okunye enanela i-fi engahlangani

Noma bheka ukuthi inketho isethiwe -i, usebenzisa i-variable hyphen ekhethekile - ku-bash, isibonelo:

$echo$-

Uma kunophawu kokuphumayo i, khona-ke igobolondo liyasebenzisana.

Kugobolondo lokungena?

Uma ukugobolondo lokungena, bese i-bash ibheka ifayela /etc/profile futhi isebenza uma ikhona.

Bese isesha noma yimaphi kulawa mafayela amathathu ngokulandelana okulandelayo:

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

Uma ithola eyodwa, iyayiqala futhi yeqe ezinye.

Kugobolondo elisebenzisanayo?

Uma usegobolondweni elingangeni, kucatshangwa ukuthi usuvele ukugobolondo lokungena, indawo imisiwe futhi izozuzwa njengefa.

Kulokhu, amafayela amabili alandelayo asetshenziswa ngokulandelana, uma ekhona:

/etc/bash.bashrc ~/.bashrc

Ayikho inketho?

Uma ungekho kugobolondo lokungena noma igobolondo elisebenzisanayo, indawo yakho ngeke ngempela ingabi nalutho. Lokhu kudala ukudideka okuningi (bona ngezansi mayelana nemisebenzi ye-cron).

Kulokhu i-bash ibheka okuguquguqukayo BASH_ENV imvelo yakho futhi idale ifayela elihambisanayo elishiwo lapho.

Ubunzima obujwayelekile kanye nemithetho yesithupha

imisebenzi ye-cron

I-95% yesikhathi lapho ngisusa iphutha ekuqaleni kwe-bash yingoba umsebenzi we-cron awusebenzi njengoba bekulindelekile.

Lo msebenzi onzima isebenza kahle uma ngiyisebenzisa kulayini womyalo, kodwa yehluleka lapho ngiwusebenzisa ku-crontab.

kuyinto izizathu ezimbili:

  • Imisebenzi ye-Cron ayihlanganisi.
  • Ngokungafani nemibhalo yomugqa womyalo, imisebenzi ye-cron ayizuzi imvelo yegobolondo.

Ngokuvamile ngeke uqaphele noma unake ukuthi iskripthi segobolondo asihlangani ngoba indawo izuza njengefa kusuka kugobolondo elisebenzisanayo. Lokhu kusho ukuthi konke PATH и alias kumiswe ngendlela obungayilindela.

Yingakho ngokuvamile kudingekile ukusetha othize PATH ngomsebenzi we-cron njengalapha:

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

Imibhalo ebizana

Enye inkinga evamile yilapho imibhalo ihlelwa ngephutha ukuthi ibizane. Ngokwesibonelo, /etc/profile ibhekisela ku ~/.bashrc.

Lokhu kuvame ukwenzeka lapho othile ezama ukulungisa iphutha futhi yonke into ibonakala isebenza. Ngeshwa, uma udinga ukuhlukanisa lezi zinhlobo ezahlukene zeseshini, kuvela izinkinga ezintsha.

Isithombe se-Sandboxed Docker

Ukuze ngizame ukusebenzisa igobolondo, ngidale isithombe se-Docker esingasetshenziswa ukulungisa iphutha ngokusebenzisa igobolondo endaweni evikelekile.

Yethula:

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

I-Dockerfile itholakala lapha.

Ukuphoqa ukungena ngemvume bese ulingisa igobolondo lokungena:

$ bash --login

Ukuhlola isethi yokuguquguquka BASH_ENV:

$ env | grep BASH_ENV

Okokulungisa iphutha crontab iskripthi esilula sizokwenziwa njalo ngeminithi (in /root/ascript):

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

Source: www.habr.com

Engeza amazwana