Bash በመሮጥ ላይ በዝርዝር

ይህን ገጽ በፍለጋ ውስጥ ካገኙት ምናልባት bashን በማሄድ ላይ አንዳንድ ችግሮችን ለመፍታት እየሞከሩ ይሆናል።

ምናልባት የእርስዎ ባሽ አካባቢ የአካባቢን ተለዋዋጭ እያዘጋጀ አይደለም እና ለምን እንደሆነ አይገባዎትም። የሆነ ነገር በተለያዩ ባሽ ማስነሻ ፋይሎች ወይም መገለጫዎች ወይም ሁሉም ፋይሎች በዘፈቀደ እስከሰራ ድረስ አጣብቀህ ሊሆን ይችላል።

ያም ሆነ ይህ, የዚህ ማስታወሻ ነጥብ ችግሮችን ለመቋቋም እንዲችሉ በተቻለ መጠን በቀላሉ bash ለመጀመር ሂደቱን መዘርጋት ነው.

ዲያግራም

ይህ የፍሰት ገበታ bash ሲሰራ ሁሉንም ሂደቶች ያጠቃልላል።

Bash በመሮጥ ላይ በዝርዝር

አሁን እያንዳንዱን ክፍል በዝርዝር እንመልከታቸው.

ሼል ይግቡ?

በመጀመሪያ በመግቢያ ሼል ውስጥ መሆንዎን ወይም አለመሆኑን መምረጥ ያስፈልግዎታል.

የመግቢያ ሼል ለበይነተገናኝ ክፍለ ጊዜ ሲገቡ የሚያስገቡት የመጀመሪያው ሼል ነው። የመግቢያ ሼል የተጠቃሚ ስም እና የይለፍ ቃል አያስፈልገውም። ባንዲራ በማከል የመግቢያ ቅርፊቱን እንዲጀምር ማስገደድ ይችላሉ። --login ሲጠራ bash, ለምሳሌ:

bash --መግባት

የመግቢያ ቅርፊቱ የባሽ ዛጎልን መጀመሪያ ሲጀምሩ የመሠረቱን አካባቢ ያዘጋጃል.

በይነተገናኝ?

ከዚያ ዛጎሉ መስተጋብራዊ መሆኑን ወይም አለመሆኑን ይወስናሉ.

ይህ በተለዋዋጭ መገኘት ሊረጋገጥ ይችላል PS1 (የትእዛዝ ግቤት ተግባሩን ይጭናል)

ከሆነ ["${PS1-}]; ከዚያም አስተጋባ በይነተገናኝ ሌላ አስተጋባ ያልሆኑ መስተጋብራዊ fi

ወይም አማራጩ እንደተዘጋጀ ይመልከቱ -i, ልዩ የሰረዝ ተለዋዋጭ በመጠቀም - በ bash ለምሳሌ፡-

$echo$-

በውጤቱ ውስጥ ምልክት ካለ i, ከዚያም ቅርፊቱ መስተጋብራዊ ነው.

በመግቢያ ሼል ውስጥ?

በመግቢያ ሼል ውስጥ ከሆኑ bash ፋይሉን ይፈልጋል /etc/profile እና ካለ ይሮጣል.

ከዚያ ከእነዚህ ሶስት ፋይሎች ውስጥ አንዱን በሚከተለው ቅደም ተከተል ይፈልጉ።

~/.bash_profile ~/.bash_login ~/.መገለጫ

አንዱን ሲያገኝ ይጀምርና ሌሎቹን ይዘላል።

በይነተገናኝ ሼል ውስጥ?

የመግቢያ ያልሆነ ሼል ውስጥ ከሆኑ, ቀደም ሲል በመግቢያ ሼል ውስጥ እንደነበሩ ይገመታል, አካባቢው የተዋቀረ እና ይወርሳል.

በዚህ አጋጣሚ የሚከተሉት ሁለት ፋይሎች ካሉ በቅደም ተከተል ይከናወናሉ፡

/ወዘተ/bash.bashrc ~/.bashrc

አማራጭ የለም?

በመግቢያ ሼል ወይም በይነተገናኝ ሼል ውስጥ ከሌሉ አካባቢዎ በእርግጥ ባዶ ይሆናል። ይህ ብዙ ግራ መጋባትን ያመጣል (ስለ ክሮን ስራዎች ከዚህ በታች ይመልከቱ).

በዚህ ጉዳይ ላይ bash ተለዋዋጭውን ይመለከታል BASH_ENV አካባቢዎን እና እዚያ የተገለጸውን ተዛማጅ ፋይል ይፈጥራል.

የተለመዱ ችግሮች እና የጣት ህጎች

ክሮን ስራዎች

ባሽ ጅምርን የማረምበት ጊዜ 95% የሚሆነው የክሮን ስራው እንደተጠበቀው እየሰራ ባለመሆኑ ነው።

ይህ የተረገመ ተግባር በትእዛዝ መስመሩ ላይ ስሰራው ጥሩ ይሰራል፣ ነገር ግን በ crontab ስሰራው አይሳካም።.

ይህ ነው ሁለት ምክንያቶች:

  • ክሮን ስራዎች በይነተገናኝ አይደሉም.
  • ከትዕዛዝ መስመር ስክሪፕቶች በተለየ፣ ክሮን ስራዎች የሼል አካባቢን አይወርሱም።

በተለምዶ የሼል ስክሪፕት መስተጋብራዊ አለመሆኑን አያስተውሉም ወይም አይጨነቁም ምክንያቱም አካባቢው ከሼል የሚወርሰው ነው። ይህ ማለት ሁሉም ነገር ማለት ነው PATH и alias እርስዎ እንደሚጠብቁት የተዋቀረ.

ለዚህም ነው ብዙውን ጊዜ አንድ የተወሰነ ነገር ማዘጋጀት አስፈላጊ የሆነው PATH ለሚከተለው ክሮን ተግባር፡-

* * * * * PATH=${PATH}:/መንገድ/ወደ/የእኔ/ፕሮግራም/አቃፊ myprogram

እርስ በርስ የሚጣሩ ስክሪፕቶች

ሌላው የተለመደ ችግር ስክሪፕቶች እርስ በርስ ለመደወል በስህተት ሲዋቀሩ ነው. ለምሳሌ, /etc/profile ይግባኝ ማለት ነው። ~/.bashrc.

ይሄ ብዙውን ጊዜ የሚከሰተው አንድ ሰው አንዳንድ ስህተቶችን ለማስተካከል ሲሞክር እና ሁሉም ነገር የሚሰራ መስሎ ሲታይ ነው። እንደ አለመታደል ሆኖ እነዚህን የተለያዩ አይነት ክፍለ ጊዜዎች መለየት ሲፈልጉ አዳዲስ ችግሮች ይከሰታሉ።

ማጠሪያ ያለው ዶከር ምስል

ሼል ለማስኬድ ለመሞከር፣ ደህንነቱ በተጠበቀ አካባቢ ውስጥ ሼልን ለማረም የሚያገለግል የዶከር ምስል ፈጠርኩ።

አስጀምር ፦

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

ዶከርፋይል ይገኛል። እዚህ.

መግቢያን ለማስገደድ እና የመግቢያ ሼል ለማስመሰል፡-

$ bash --login

የተለዋዋጮችን ስብስብ ለመሞከር BASH_ENV:

$ env | grep BASH_ENV

ለማረም crontab ቀላል ስክሪፕት በየደቂቃው (በ /root/ascript):

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

ምንጭ: hab.com

አስተያየት ያክሉ