ரன்னிங் பேஷ் விரிவாக

தேடலில் இந்தப் பக்கத்தை நீங்கள் கண்டறிந்தால், பாஷை இயக்குவதில் ஏதேனும் சிக்கலைத் தீர்க்க முயற்சிக்கிறீர்கள்.

ஒருவேளை உங்கள் பாஷ் சூழல் சூழல் மாறியை அமைக்கவில்லை மற்றும் ஏன் என்று உங்களுக்கு புரியவில்லை. நீங்கள் பல்வேறு பேஷ் பூட் கோப்புகள் அல்லது சுயவிவரங்கள் அல்லது அது வேலை செய்யும் வரை சீரற்ற அனைத்து கோப்புகளிலும் ஏதாவது சிக்கியிருக்கலாம்.

எவ்வாறாயினும், இந்த குறிப்பின் முக்கிய அம்சம் என்னவென்றால், பாஷை தொடங்குவதற்கான நடைமுறையை முடிந்தவரை எளிமையாக அமைக்க வேண்டும், இதனால் நீங்கள் சிக்கல்களைச் சமாளிக்க முடியும்.

விளக்கப்படம்

இந்த பாய்வு விளக்கப்படம் பாஷை இயக்கும் போது அனைத்து செயல்முறைகளையும் சுருக்கமாகக் கூறுகிறது.

ரன்னிங் பேஷ் விரிவாக

இப்போது ஒவ்வொரு பகுதியையும் கூர்ந்து கவனிப்போம்.

ஷெல் உள்நுழையவா?

முதலில் நீங்கள் உள்நுழைவு ஷெல்லில் இருக்கிறீர்களா இல்லையா என்பதை நீங்கள் தேர்வு செய்ய வேண்டும்.

உள்நுழைவு ஷெல் என்பது ஊடாடும் அமர்வுக்கு நீங்கள் உள்நுழையும்போது நீங்கள் உள்ளிடும் முதல் ஷெல் ஆகும். உள்நுழைவு ஷெல்லுக்கு பயனர்பெயர் மற்றும் கடவுச்சொல் தேவையில்லை. கொடியைச் சேர்ப்பதன் மூலம் உள்நுழைவு ஷெல்லைத் தொடங்கும்படி கட்டாயப்படுத்தலாம் --login அழைக்கப்படும் போது bashஎடுத்துக்காட்டாக:

bash --உள்நுழைவு

நீங்கள் முதலில் பாஷ் ஷெல்லைத் தொடங்கும்போது உள்நுழைவு ஷெல் அடிப்படை சூழலை அமைக்கிறது.

ஊடாடுகிறதா?

ஷெல் ஊடாடுகிறதா இல்லையா என்பதை நீங்கள் தீர்மானிக்கிறீர்கள்.

மாறி இருப்பதன் மூலம் இதை சரிபார்க்கலாம் PS1 (இது கட்டளை உள்ளீட்டு செயல்பாட்டை நிறுவுகிறது):

என்றால் [ "${PS1-}" ]; பிறகு எதிரொலி ஊடாடும் மற்றவை எதிரொலி அல்லாத ஊடாடும் fi

அல்லது விருப்பம் அமைக்கப்பட்டுள்ளதா என்று பார்க்கவும் -i, ஒரு சிறப்பு ஹைபன் மாறியைப் பயன்படுத்துதல் - பாஷில், எடுத்துக்காட்டாக:

$echo$-

வெளியீட்டில் ஒரு சின்னம் இருந்தால் i, பின்னர் ஷெல் ஊடாடும்.

உள்நுழைவு ஷெல்லில்?

நீங்கள் உள்நுழைவு ஷெல்லில் இருந்தால், பாஷ் கோப்பைத் தேடுகிறது /etc/profile அது இருந்தால் இயங்கும்.

பின்வரும் வரிசையில் இந்த மூன்று கோப்புகளில் ஏதேனும் ஒன்றைத் தேடுகிறது:

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

அது ஒன்றைக் கண்டால், அது அதைத் தொடங்கி மற்றவற்றைத் தவிர்க்கிறது.

ஊடாடும் ஷெல்லில்?

நீங்கள் உள்நுழைவு அல்லாத ஷெல்லில் இருந்தால், நீங்கள் ஏற்கனவே உள்நுழைவு ஷெல்லில் இருந்திருக்கிறீர்கள் என்று கருதப்படுகிறது, சூழல் கட்டமைக்கப்பட்டுள்ளது மற்றும் மரபுரிமையாக இருக்கும்.

இந்த வழக்கில், பின்வரும் இரண்டு கோப்புகள் இருந்தால், அவை வரிசையாக செயல்படுத்தப்படும்:

/etc/bash.bashrc ~/.bashrc

விருப்பம் இல்லையா?

நீங்கள் உள்நுழைவு ஷெல் அல்லது ஊடாடும் ஷெல்லில் இல்லை என்றால், உங்கள் சூழல் உண்மையில் காலியாக இருக்கும். இது நிறைய குழப்பத்தை ஏற்படுத்துகிறது (கிரான் வேலைகள் பற்றி கீழே பார்க்கவும்).

இந்த வழக்கில் பாஷ் மாறியைப் பார்க்கிறது BASH_ENV உங்கள் சூழல் மற்றும் அங்கு குறிப்பிடப்பட்ட தொடர்புடைய கோப்பை உருவாக்குகிறது.

பொதுவான சிரமங்கள் மற்றும் கட்டைவிரல் விதிகள்

கிரான் வேலைகள்

95% நேரம் நான் பேஷ் ஸ்டார்ட்அப்பை பிழைத்திருத்துவதற்கு காரணம் கிரான் வேலை எதிர்பார்த்தபடி இயங்காததால் தான்.

இந்த மட்டமான பணி நான் அதை கட்டளை வரியில் இயக்கும்போது நன்றாக வேலை செய்கிறது, ஆனால் நான் அதை crontab இல் இயக்கும்போது தோல்வியடையும்.

இது இரண்டு காரணங்கள்:

  • கிரான் வேலைகள் ஊடாடத்தக்கவை அல்ல.
  • கட்டளை வரி ஸ்கிரிப்ட்களைப் போலன்றி, கிரான் வேலைகள் ஷெல் சூழலைப் பெறுவதில்லை.

பொதுவாக, ஷெல் ஸ்கிரிப்ட் ஊடாடத்தக்கதாக இல்லை என்பதை நீங்கள் கவனிக்க மாட்டீர்கள் அல்லது கவலைப்பட மாட்டீர்கள், ஏனெனில் இன்டராக்டிவ் ஷெல்லிலிருந்து சூழல் பெறுகிறது. இதன் பொருள் எல்லாம் PATH и alias நீங்கள் எதிர்பார்ப்பது போல் கட்டமைக்கப்பட்டுள்ளது.

அதனால்தான் ஒரு குறிப்பிட்ட அமைப்பை அடிக்கடி அமைக்க வேண்டும் 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 ஒவ்வொரு நிமிடமும் ஒரு எளிய ஸ்கிரிப்ட் செயல்படுத்தப்படும் (in /root/ascript):

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

ஆதாரம்: www.habr.com

கருத்தைச் சேர்