Ṣiṣe Bash ni awọn alaye

Ti o ba rii oju-iwe yii ni wiwa kan, o ṣee ṣe o n gbiyanju lati yanju iṣoro diẹ pẹlu ṣiṣe bash.

Boya agbegbe bash rẹ ko ṣeto iyipada agbegbe ati pe o ko loye idi. O le ti di nkan kan ni ọpọlọpọ awọn faili bata bata tabi awọn profaili tabi gbogbo awọn faili ni laileto titi o fi ṣiṣẹ.

Ni eyikeyi idiyele, aaye ti akọsilẹ yii ni lati ṣeto ilana fun ibẹrẹ bash ni irọrun bi o ti ṣee ki o le koju awọn iṣoro.

Aworan atọka

Aworan ṣiṣan yii ṣe akopọ gbogbo awọn ilana nigba ṣiṣe bash.

Ṣiṣe Bash ni awọn alaye

Nisisiyi ẹ ​​jẹ ki a wo apakan kọọkan ni pẹkipẹki.

Wọle Shell?

Ni akọkọ o nilo lati yan boya o wa ninu ikarahun iwọle tabi rara.

Ikarahun iwọle jẹ ikarahun akọkọ ti o tẹ nigbati o wọle fun igba ibaraenisepo. Ikarahun iwọle ko nilo orukọ olumulo ati ọrọ igbaniwọle kan. O le fi ipa mu ikarahun iwọle lati bẹrẹ nipa fifi asia kan kun --login nigbati a npe ni bashfun apẹẹrẹ:

bash --wọle

Ikarahun iwọle ṣeto agbegbe ipilẹ nigbati o kọkọ bẹrẹ ikarahun bash.

Ibanisọrọ bi?

Lẹhinna o pinnu boya ikarahun naa jẹ ibaraenisọrọ tabi rara.

Eyi le ṣe ayẹwo nipasẹ wiwa ti oniyipada PS1 (o fi iṣẹ titẹ sii aṣẹ sori ẹrọ):

ti ["${PS1-}" ]; ki o si iwoyi ibanisọrọ miran iwoyi ti kii-ibanisọrọ fi

Tabi wo boya aṣayan ti ṣeto -i, ni lilo oniyipada arosọ pataki kan - ni bash, fun apẹẹrẹ:

$echo$-

Ti aami ba wa ninu iṣẹjade i, lẹhinna ikarahun naa jẹ ibaraẹnisọrọ.

Ninu ikarahun wiwọle?

Ti o ba wa ni ikarahun iwọle, lẹhinna bash n wa faili naa /etc/profile ati ki o nṣiṣẹ ti o ba wa.

Lẹhinna wa eyikeyi ninu awọn faili mẹta wọnyi ni ilana atẹle:

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

Nigbati o ba ri ọkan, o bẹrẹ o si fo awọn miiran.

Ni ohun ibanisọrọ ikarahun?

Ti o ba wa ni ikarahun ti kii ṣe iwọle, o ro pe o ti wa tẹlẹ ninu ikarahun iwọle kan, agbegbe ti tunto ati pe yoo jogun.

Ni ọran yii, awọn faili meji wọnyi ni a ṣe ni aṣẹ, ti wọn ba wa:

/etc/bash.bashrc ~/.bashrc

Ko si aṣayan?

Ti o ko ba si ninu boya ikarahun iwọle tabi ikarahun ibaraenisepo, lẹhinna agbegbe rẹ yoo jẹ ofo nitootọ. Eyi fa idamu pupọ (wo isalẹ nipa awọn iṣẹ cron).

Ni idi eyi bash wo oniyipada BASH_ENV agbegbe rẹ ati ṣẹda faili ti o baamu ti a sọ pato nibẹ.

Awọn iṣoro ti o wọpọ ati Awọn ofin ti Atanpako

cron awọn iṣẹ

95% ti akoko ti Mo yokokoro bash ibẹrẹ o jẹ nitori pe iṣẹ cron ko ṣiṣẹ bi o ti ṣe yẹ.

Iṣẹ-ṣiṣe buburu yii ṣiṣẹ daradara nigbati mo nṣiṣẹ lori laini aṣẹ, ṣugbọn kuna nigbati mo nṣiṣẹ ni crontab.

o ti wa ni idi meji:

  • Awọn iṣẹ Cron kii ṣe ibaraẹnisọrọ.
  • Ko dabi awọn iwe afọwọkọ laini aṣẹ, awọn iṣẹ cron ko jogun agbegbe ikarahun naa.

Ni deede iwọ kii yoo ṣe akiyesi tabi ṣe abojuto pe iwe afọwọkọ ikarahun kii ṣe ibaraenisọrọ nitori agbegbe jogun lati ikarahun ibaraenisepo. Eleyi tumo si wipe ohun gbogbo PATH и alias tunto bi o ti yoo reti.

Eyi ni idi ti o ṣe pataki nigbagbogbo lati ṣeto kan pato PATH fun iṣẹ-ṣiṣe cron bi ibi:

* * * * * PATH=${PATH}:/pato/to/my/program/folda myprogram

Awọn iwe afọwọkọ pipe kọọkan miiran

Iṣoro miiran ti o wọpọ ni nigbati awọn iwe afọwọkọ ti tunto ni aṣiṣe lati pe ara wọn. Fun apere, /etc/profile apetunpe si ~/.bashrc.

Eyi maa n ṣẹlẹ nigbati ẹnikan ba gbiyanju lati ṣatunṣe aṣiṣe kan ati pe ohun gbogbo dabi pe o ṣiṣẹ. Laanu, nigba ti o ba nilo lati ya awọn oriṣiriṣi awọn iru igba wọnyi, awọn iṣoro titun dide.

Aworan Docker Sandboxed

Lati ṣe idanwo pẹlu ṣiṣiṣẹ ikarahun kan, Mo ṣẹda aworan Docker kan ti o le ṣee lo lati yokokoro nṣiṣẹ ikarahun ni agbegbe to ni aabo.

Ifilọlẹ:

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

Dockerfile wa nibi.

Lati fi agbara mu iwọle ki o ṣe adaṣe ikarahun iwọle kan:

$ bash --login

Lati ṣe idanwo ṣeto awọn oniyipada BASH_ENV:

$ env | grep BASH_ENV

Fun n ṣatunṣe aṣiṣe crontab iwe afọwọkọ ti o rọrun yoo ṣiṣẹ ni iṣẹju kọọkan (ni /root/ascript):

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

orisun: www.habr.com

Fi ọrọìwòye kun