Ho matha Bash ka botlalo

Haeba u fumane leqephe lena ha u batlisisa, mohlomong u leka ho rarolla bothata bo itseng ka ho sebelisa bash.

Mohlomong tikoloho ea hau ea bash ha e behe tikoloho e fapaneng 'me ha u utloisise hore na ke hobane'ng. E kanna eaba u kentse ho hong ho lifaele tse fapaneng tsa bash boot kapa liprofaele kapa lifaele tsohle ka tšohanyetso ho fihlela e sebetsa.

Leha ho le joalo, ntlha ea lengolo lena ke ho beha mokhoa oa ho qala bash ka hohle kamoo ho ka khonehang e le hore u ka sebetsana le mathata.

Setšoantšo se Qanollang

Flowchart ena e akaretsa lits'ebetso tsohle ha o sebetsa bash.

Ho matha Bash ka botlalo

Joale a re hlahlobeng karolo ka 'ngoe.

Kena ho Shell?

Pele u lokela ho khetha hore na u ka khetla ea ho kena kapa che.

Khetla ea ho kena ke khetla ea pele eo u e kenyang ha u kena bakeng sa kopano e kopanetsoeng. Khetla ea ho kena ha e hloke lebitso la mosebelisi le password. O ka qobella khetla ea ho kena ho qala ka ho eketsa folakha --login ha a bitsoa bashmohlala:

bash --kena

Khetla ea ho kena e theha tikoloho ea motheo ha o qala khetla ea bash.

Interactive?

Ebe u etsa qeto ea hore na khetla e sebelisana kapa che.

Sena se ka hlahlojoa ka boteng ba ho fetoha PS1 (e kenya mosebetsi oa ho kenya taelo):

haeba ["${PS1-}"]; ebe echo interactive else echo non-interactive fi

Kapa bona hore na khetho e setiloe -i, ka ho sebelisa phapano e khethehileng ea mothapo - ka bash, mohlala:

$echo$-

Haeba ho na le letšoao ho tlhahiso i, joale khetla e sebelisana.

Ka khetla ea ho kena?

Haeba u ka har'a khetla ea ho kena, joale bash e batla faele /etc/profile mme e sebetsa haeba e le teng.

Ebe u batla e 'ngoe ea lifaele tsena tse tharo ka tatellano e latelang:

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

Ha e fumana e le nngwe, e a e qala ebe e tlola tse ding.

Ka khetla e sebelisanang?

Haeba u le ka har'a khetla e sa keneng, ho nahanoa hore u se u ntse u le ka har'a khetla ea ho kena, tikoloho e hlophisitsoe 'me e tla rua lefa.

Tabeng ena, lifaele tse peli tse latelang li etsoa ka tatellano, haeba li le teng:

/etc/bash.bashrc ~/.bashrc

Ha ho khetho?

Haeba u se ka har'a khetla ea ho kena kapa khetla e sebetsanang, joale tikoloho ea hau e tla be e se na letho. Sena se baka pherekano e ngata (sheba ka tlase mabapi le mesebetsi ea cron).

Tabeng ena bash e sheba ho feto-fetoha BASH_ENV tikoloho ea hau mme e theha faele e lumellanang e boletsoeng moo.

Mathata a Tloaelehileng le Melao ea Monoana

mesebetsi ea cron

95% ea nako eo ke lokisang bash ho qala ke hobane mosebetsi oa cron ha o sebetse kamoo ho neng ho lebelletsoe.

Mosebetsi o boima ona e sebetsa hantle ha ke e tsamaisa moleng oa taelo, empa e hloleha ha ke e tsamaisa ka crontab.

ke mabaka a mabeli:

  • Mesebetsi ea Cron ha e sebelisane.
  • Ho fapana le mangolo a taelo ea litaelo, cron jobs ha e rue tikoloho ea khetla.

Ka tloaelo u ke ke ua hlokomela kapa ua tsotella hore script ea khetla ha e sebelisane hobane tikoloho e rua ho tsoa ho khetla e sebetsanang. Sena se bolela hore tsohle PATH и alias hlophisitsoe kamoo u neng u ka lebella.

Ke ka lebaka leo hangata ho hlokahalang ho beha e itseng PATH bakeng sa mosebetsi oa cron joalo ka mona:

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

Mangolo a bitsana

Bothata bo bong bo atileng ke ha lingoloa li hlophisoa ka phoso ho bitsana. Ka mohlala, /etc/profile boipiletso ho ~/.bashrc.

Hangata sena se etsahala ha motho e mong a leka ho lokisa phoso e itseng 'me ntho e 'ngoe le e 'ngoe e bonahala e sebetsa. Ka bomalimabe, ha o hloka ho arola mefuta ena e fapaneng ea mananeo, mathata a macha a hlaha.

Setšoantšo sa Sandboxed Docker

Ho leka ho sebelisa khetla, ke thehile setšoantšo sa Docker se ka sebelisoang ho lokisa khetla sebakeng se sireletsehileng.

Qala:

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

Dockerfile e teng mona.

Ho qobella ho kena le ho etsisa khetla ea ho kena:

$ bash --login

Ho leka sehlopha sa lintho tse fapaneng BASH_ENV:

$ env | grep BASH_ENV

Bakeng sa ho lokisa liphoso crontab script e bonolo e tla etsoa motsotso o mong le o mong (in /root/ascript):

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

Source: www.habr.com

Eketsa ka tlhaloso