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.
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 bash
isibonelo:
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
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