Kuthamanga Bash mwatsatanetsatane

Ngati mwapeza tsambali mukufufuza, mwina mukuyesera kuthetsa vuto ndi kuthamanga bash.

Mwina malo anu a bash sakukhazikitsa kusintha kwa chilengedwe ndipo simukumvetsa chifukwa chake. Mutha kukhala ndi china chake m'mafayilo osiyanasiyana a bash boot kapena mbiri kapena mafayilo onse mwachisawawa mpaka atagwira ntchito.

Mulimonsemo, mfundo yachidziwitsochi ndikuyika njira yoyambira bash mosavuta momwe mungathere kuti muthane ndi mavuto.

Chithunzi

Flowchart iyi ikufotokozera mwachidule njira zonse mukamagwiritsa ntchito bash.

Kuthamanga Bash mwatsatanetsatane

Tsopano tiyeni tione bwinobwino mbali iliyonse.

Lowani Chipolopolo?

Choyamba muyenera kusankha ngati muli mu chipolopolo cholowera kapena ayi.

Chipolopolo cholowera ndi chipolopolo choyamba chomwe mumalowetsa mukalowa mu gawo lolumikizana. Chipolopolo cholowera sichifuna dzina lolowera ndi mawu achinsinsi. Mutha kukakamiza chipolopolo cholowera kuti chiyambe powonjezera mbendera --login ataitanidwa bash, mwachitsanzo:

bash --lowani

Chipolopolo cholowera chimakhazikitsa malo oyambira mukangoyambitsa chipolopolo cha bash.

Zokambirana?

Kenako mumazindikira ngati chipolopolocho chimagwira ntchito kapena ayi.

Izi zikhoza kufufuzidwa ndi kukhalapo kwa kusintha PS1 (imayika ntchito yolowetsa lamulo):

ngati ["${PS1-}"]; ndiye echo interactive ina echo non-interactive fi

Kapena onani ngati njirayo yakhazikitsidwa -i, pogwiritsa ntchito hyphen variable - mu bash, mwachitsanzo:

$Echo$-

Ngati pali chizindikiro mu linanena bungwe i, ndiye kuti chipolopolocho chimalumikizana.

Mu chipolopolo cholowera?

Ngati muli mu chipolopolo cholowera, ndiye bash imayang'ana fayilo /etc/profile ndi kuthamanga ngati alipo.

Kenako fufuzani iliyonse mwa mafayilo atatuwa motere:

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

Ikapeza imodzi, imayiyamba ndikudumpha inayo.

Mu chipolopolo cholumikizana?

Ngati muli mu chipolopolo chosalowetsamo, zimaganiziridwa kuti mwakhala kale mu chipolopolo cholowera, chilengedwe chimakonzedwa ndipo chidzalandira cholowa.

Pankhaniyi, mafayilo awiri otsatirawa amachitidwa mwadongosolo, ngati alipo:

/etc/bash.bashrc ~/.bashrc

Palibe njira?

Ngati simuli mu chipolopolo cholowera kapena chipolopolo cholumikizana, ndiye kuti malo anu adzakhala opanda kanthu. Izi zimayambitsa chisokonezo chachikulu (onani pansipa za ntchito za cron).

Pankhaniyi bash amayang'ana zosinthika BASH_ENV chilengedwe chanu ndikupanga fayilo yofananira yomwe yatchulidwa pamenepo.

Zovuta Zodziwika ndi Malamulo a Thumb

ntchito za cron

95% ya nthawi yomwe ndimathetsa bash ndichifukwa choti ntchito ya cron sikuyenda momwe ndimayembekezera.

Ntchito yovuta iyi imagwira ntchito bwino ndikamayendetsa pamzere wolamula, koma imalephera ndikamayendetsa mu crontab.

ndi zifukwa ziwiri:

  • Ntchito za Cron sizimalumikizana.
  • Mosiyana ndi zolemba za mzere wamalamulo, ntchito za cron sizitengera chilengedwe cha zipolopolo.

Nthawi zambiri simudzazindikira kapena kusamala kuti chipolopolo sichimalumikizana chifukwa chilengedwe chimachokera ku chipolopolocho. Izi zikutanthauza kuti zonse PATH ΠΈ alias kukonzedwa momwe mungayembekezere.

Ichi ndichifukwa chake nthawi zambiri zimakhala zofunikira kukhazikitsa zenizeni PATH pa ntchito ya cron monga apa:

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

Malemba akuyitana wina ndi mzake

Vuto linanso lodziwika bwino ndi pomwe zolemba zimasinthidwa molakwika kuti ziziyimbirana wina ndi mnzake. Mwachitsanzo, /etc/profile apempha ku ~/.bashrc.

Izi nthawi zambiri zimachitika pamene wina ayesa kukonza zolakwika ndipo zonse zimawoneka ngati zikuyenda. Tsoka ilo, mukafunika kulekanitsa magawo osiyanasiyana awa, mavuto atsopano amayamba.

Chithunzi cha Sandboxed Docker

Kuti ndiyesere kugwiritsa ntchito chipolopolo, ndidapanga chithunzi cha Docker chomwe chitha kugwiritsidwa ntchito kuthetsa chipolopolo pamalo otetezeka.

Kukhazikitsa:

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

Dockerfile ilipo apa.

Kukakamiza kulowa ndikuyesa chipolopolo cholowera:

$ bash --login

Kuyesa magulu osiyanasiyana BASH_ENV:

$ env | grep BASH_ENV

Kwa debugging crontab script yosavuta idzaperekedwa mphindi iliyonse (in /root/ascript):

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

Source: www.habr.com

Kuwonjezera ndemanga