په تفصیل سره باش چلول

که تاسو دا پاڼه په لټون کې وموندله، تاسو شاید هڅه کوئ چې د باش چلولو سره یو څه ستونزه حل کړئ.

شاید ستاسو د باش چاپیریال د چاپیریال متغیر نه تنظیموي او تاسو نه پوهیږئ ولې. تاسو ممکن په مختلف باش بوټ فایلونو یا پروفایلونو یا په تصادفي ډول ټولو فایلونو کې یو څه پټ کړی وي تر هغه چې دا کار وکړي.

په هر حالت کې، د دې یادښت نقطه دا ده چې د باش پیل کولو طرزالعمل د امکان تر حده په ساده ډول ترتیب کړئ ترڅو تاسو د ستونزو سره معامله وکړئ.

ډیاګرام

دا فلوچارټ ټولې پروسې لنډیز کوي کله چې bash چلوي.

په تفصیل سره باش چلول

اوس راځئ چې هرې برخې ته نږدې وګورو.

ننوتل شیل؟

لومړی تاسو اړتیا لرئ غوره کړئ چې ایا تاسو د ننوتلو شیل کې یاست یا نه.

د ننوتلو شیل لومړی شیل دی چې تاسو یې دننه کوئ کله چې تاسو د متقابل ناستې لپاره ننوتل. د ننوتلو شیل د کارن نوم او پټنوم ته اړتیا نلري. تاسو کولی شئ د بیرغ په اضافه کولو سره د ننوتلو شیل پیل کولو ته مجبور کړئ --login کله چې ویل کیږي bashد بیلګې په توګه:

bash --login

د ننوتلو شیل د بیس چاپیریال تنظیموي کله چې تاسو لومړی د باش شیل پیل کړئ.

متقابل؟

بیا تاسو معلومه کړئ چې شیل متقابل دی که نه.

دا د متغیر شتون لخوا چیک کیدی شي PS1 (دا د کمانډ ان پټ فنکشن نصبوي):

که [ "${PS1-}" ]; بیا echo Interactive او echo non-interactive fi

یا وګورئ چې اختیار ټاکل شوی دی -iد ځانګړي هایفین متغیر په کارولو سره - په باش کې، د بیلګې په توګه:

$echo$-

که چیرې په محصول کې سمبول شتون ولري i، بیا شیل متقابل دی.

د ننوتلو شیل کې؟

که تاسو د ننوتلو شیل کې یاست، نو بیا بش د فایل لپاره ګوري /etc/profile او که شتون ولري چلوي.

بیا په لاندې ترتیب کې د دې دریو فایلونو څخه هر یو لټوي:

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

کله چې دا یو ومومي، دا پیل کوي او نور یې پریږدي.

په متقابل شیل کې؟

که تاسو په غیر لاګ ان شیل کې یاست، داسې انګیرل کیږي چې تاسو دمخه د ننوتلو شیل کې یاست، چاپیریال ترتیب شوی او په میراث کې به وي.

په دې حالت کې، لاندې دوه فایلونه په ترتیب سره اجرا کیږي، که دوی شتون ولري:

/etc/bash.bashrc ~/.bashrc

هیڅ اختیار نشته؟

که تاسو د ننوتلو شیل یا متقابل شیل کې نه یاست ، نو ستاسو چاپیریال به واقعیا خالي وي. دا د ډیری ګډوډۍ لامل کیږي (د کرون دندو په اړه لاندې وګورئ).

پدې حالت کې bash متغیر ته ګوري BASH_ENV ستاسو چاپیریال او اړونده فایل رامینځته کوي چې هلته مشخص شوي.

عام مشکلات او د ګوتو قواعد

د کرون دندې

95٪ هغه وخت چې زه د بش سټارټ اپ ډیبګ کوم دا ځکه چې د کرون دنده د تمې سره سم نه روانه ده.

دا ناوړه دنده ښه کار کوي کله چې زه دا د کمانډ لاین کې پرمخ وړم ، مګر ناکام کیږي کله چې زه یې په کرونټاب کې پرمخ وړم.

دا دوه لاملونه:

  • د کرون دندې متقابل نه دي.
  • د کمانډ لاین سکریپټونو برخلاف ، کرون دندې د شیل چاپیریال میراث نه کوي.

معمولا تاسو به پام ونه کړئ یا پاملرنه ونکړئ چې د شیل سکریپټ متقابل نه دی ځکه چې چاپیریال د متقابل شیل څخه میراث کیږي. دا پدې مانا ده چې هرڅه PATH и alias تنظیم شوی لکه څنګه چې تاسو تمه لرئ.

له همدې امله دا ډیری وختونه اړین دي چې یو مشخص تنظیم کړئ PATH د کرون دندې لپاره لکه دلته:

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

سکریپټونه یو بل ته غږ کوي

بله عامه ستونزه دا ده چې سکریپټونه په غلطۍ سره یو بل ته زنګ وهلو لپاره تنظیم شوي. د مثال په ډول، /etc/profile غوښتنه کوي ~/.bashrc.

دا معمولا پیښیږي کله چې یو څوک هڅه وکړي چې یو څه غلطۍ حل کړي او هرڅه کار کوي. له بده مرغه، کله چې تاسو د دې مختلف ډوله غونډو جلا کولو ته اړتیا لرئ، نوې ستونزې رامنځته کیږي.

د سانډ باکس شوي ډاکر عکس

د شیل چلولو تجربه کولو لپاره ، ما د ډاکر عکس رامینځته کړی چې په خوندي چاپیریال کې د شیل چلولو ډیبګ لپاره کارول کیدی شي.

پیل:

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

Dockerfile موقعیت لري دلته.

د ننوتلو مجبورولو او د ننوتلو شیل سمولو لپاره:

$ bash --login

د متغیرونو سیټ ازموینې لپاره BASH_ENV:

$ env | grep BASH_ENV

د ډیبګ کولو لپاره crontab یو ساده سکریپټ به په هره دقیقه کې اجرا شي (په /root/ascript):

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

سرچینه: www.habr.com

Add a comment