$ SHLVL വേരിയബിൾ നിങ്ങളോട് എത്ര ഷെല്ലുകൾ എത്ര ആഴത്തിൽ ആണെന്ന് പറയാൻ ഉപയോഗിക്കുന്നു. ഇത് നിങ്ങൾ ആശയക്കുഴപ്പത്തിലാക്കുകയാണെങ്കിൽ തുടക്കത്തിൽ ആരംഭിക്കുന്നതാണ്.
എന്താണ് ഷെൽ?
ഒരു ഷെൽ കമാൻഡുകൾ എടുക്കുകയും അവയെ പ്രവർത്തിപ്പിക്കുന്നതിന് ആവശ്യമായ ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിലേക്ക് നൽകുകയും ചെയ്യുന്നു. മിക്ക ലിനക്സ് സിസ്റ്റങ്ങളിലും ഷെൽ പ്രോഗ്രാമിനെ ബാഷ് (ദി ബോൺ എഗൻ ഷെൽ) എന്ന് വിളിക്കുന്നു. എന്നാൽ C ഷെൽ (tcsh), കോർൺ ഷെൽ (ksh) എന്നിവയും ലഭ്യമാണ്.
ലിനക്സ് ഷെൽ എങ്ങനെ ആക്സസ് ചെയ്യാം
സാധാരണയായി ഒരു ടെർമിനൽ എമുലേഷൻ പ്രോഗ്രാം ഉപയോഗിച്ച് XTerm, konsole അല്ലെങ്കിൽ gnome-terminal ഉപയോഗിച്ചു് നിങ്ങൾ ഷെൽ പ്രോഗ്രാമുമായി സംവദിയ്ക്കുന്ന ഒരു ഉപയോക്താവായി സാധാരണയായി ഉപയോഗിയ്ക്കുന്നു.
ഓപ്പൺബോക്സ് പോലുള്ള ജാലകങ്ങളുടെ നടത്തിപ്പുകാരനെയോ ഗ്നോം അല്ലെങ്കിൽ കെഡിഇ പോലെയുള്ള ഒരു പണിയിട പരിപാടിയോ നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്നുണ്ടെങ്കിൽ, ഒരു മെഷീനിൽ നിന്നും ഡാഷിൽ നിന്നും ഒരു ടെർമിനൽ എമുലേറ്റർ കണ്ടെത്തും. പല സിസ്റ്റങ്ങളിലും shortcut CTRL ALT, T എന്നിവ ടെർമിനൽ വിൻഡോ തുറക്കും.
പകരം നിങ്ങൾക്ക് കമാൻഡ് ലൈൻ ഷെല്ലിലേക്കുള്ള നേരിട്ടുള്ള പ്രവേശനം നൽകുന്ന മറ്റൊരു tty (teletypewriter) ലേക്ക് മാറാം. നിങ്ങൾക്ക് CTRL ALT, F1, CTRL ALT, F2 എന്നിവ അമർത്തുന്നതിലൂടെ ഇത് ചെയ്യാൻ കഴിയും.
ഒരു ഷെൽ ലെവൽ എന്താണ്
ഷെല്ലിൽ ഒരു ആജ്ഞ പ്രവർത്തിപ്പിക്കുമ്പോൾ ഷെൽ ലെവൽ എന്ന് വിളിക്കുന്ന ഒന്ന്. ഒരു ഷെല്ലിനകത്ത് നിങ്ങൾക്ക് മറ്റൊരു ഷെൽ തുറക്കാൻ കഴിയും, അത് ഒരു സബ്ഷൽ അല്ലെങ്കിൽ തുറന്ന ഷെൽ ആയി മാറുന്നു.
അതിനാൽ പാരന്റ് ഷെൽ ഒരുപക്ഷേ ലെവൽ 1 ഷെല്ലായി പരിഗണിക്കപ്പെടുകയും കുട്ടിയുടെ ഷെൽ ഒരു ലെവൽ 2 ഷെൽ ആയിരിക്കും.
ഷെൽ ലെവൽ എങ്ങനെ പ്രദർശിപ്പിക്കാം
$ SHLVL വേരിയബിൾ ഉപയോഗിച്ചാണ് നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്ന ഷെൽ ലെവലിനെ അറിയിക്കുന്നതെന്ന് ലേഖനത്തിന്റെ തലക്കെട്ടിനെ അടിസ്ഥാനമാക്കി അത് ആശ്ചര്യപ്പെടേണ്ടതില്ല.
നിങ്ങൾ നിലവിൽ റൺ ചെയ്യുന്ന ഷെൽ ലെവൽ കാണുന്നതിന് ഇനി പറയുന്നവ ടൈപ്പ് ചെയ്യുക:
echo $ SHLVL
ഒരു ടെർമിനൽ വിൻഡോയിൽ മുകളിൽ പറഞ്ഞിരിക്കുന്ന കമാൻഡ് റൺ ചെയ്താൽ രസകരമായത്, റിട്ടേൺ ചെയ്ത ഫലം 2 ആണെന്ന് നിങ്ങൾ മനസ്സിലാക്കിയേക്കാം.
Tty ഉപയോഗിച്ച് അതേ ആജ്ഞ ഉപയോഗിച്ചു് പ്രവർത്തിക്കുന്നു എങ്കിൽ ഫലം 1 ആകുന്നു.
എന്തുകൊണ്ടാണ് നിങ്ങൾ ചോദിക്കേണ്ടത്? നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്ന പണിയിട പരിസ്ഥിതി ഒരു ഷെല്ലിന് മുകളിലാണ് പ്രവർത്തിക്കുന്നത്. ഷെൽ ലവൽ 1. നിങ്ങൾ ആ പണിയിട പരിധിക്കുള്ളിൽ തുറന്ന ഏത് ടെർമിനൽ വിൻഡോയും ഡെസ്ക്ടോപ്പ് എന്വയോണ്മെന്റ് തുറന്ന ഷെല്ലിന്റെ കുട്ടി ആയിരിക്കണം. അതിനാൽ ഷെൽ ലെവൽ 2 ൽ അല്ലാതെ മറ്റേതെങ്കിലും സംഖ്യയിൽ തുടങ്ങാൻ പാടില്ല.
Tty ഒരു പണിയിട പരിസ്ഥിതി പ്രവർത്തിക്കുന്നില്ല, അതുകൊണ്ട് ഇത് ഒരു ലെവൽ 1 ഷെല്ലാണ്.
സബ്ഷെല്സ് എങ്ങനെ സൃഷ്ടിക്കാം
ഷെല്ലുകളും സബ്ഷെൽസുകളും എന്ന ആശയം പരീക്ഷിക്കാൻ ഏറ്റവും എളുപ്പമുള്ള മാർഗ്ഗം. ടെർമിനൽ വിൻഡോ തുറന്ന് താഴെ ടൈപ്പുചെയ്യുക:
echo $ SHLVL
ടെർമിനൽ വിൻഡോയിൽ നിന്നും നമുക്കറിയാവുന്നതുപോലെ, ഷെൽ ലെവൽ 2 ആണ്.
ഇപ്പോൾ ടെർമിനൽ വിൻഡോയ്ക്കുള്ളിൽ ടൈപ്പ് ചെയ്യുക:
sh
ഷെൽ കമാന്ഡ്് ഒരു ഇന്ററാക്ടീവ് ഷെല് പ്രവര്ത്തിപ്പിക്കുന്നു, നിങ്ങള് ഒരു ഷെല് അല്ലെങ്കില് ഒരു സബ്ഷെല് ഉപയോഗിക്കുമ്പോള് ഷെല് ഉപയോഗിക്കുന്നു എന്നാണ്.
നിങ്ങൾ ഇപ്പോൾ ഇത് വീണ്ടും ടൈപ്പുചെയ്യുകയാണെങ്കിൽ:
echo $ SHLVL
ഷെൽ നിലവാരത്തെ 3 ആയി സജ്ജമാക്കിയതായി നിങ്ങൾക്ക് കാണാം. സബ്ഷെയറിൽ നിന്ന് sh കമാൻഡ് പ്രവർത്തിക്കുന്നത് സബ്ഷെലിന്റെ സബ്സൽ തുറക്കുന്നതിനാൽ ഷെൽ ലെവൽ നാലിൽ നിലകൊള്ളും.
ഷെൽ ലെവൽ എന്തുകൊണ്ട് പ്രധാനമാണ്?
നിങ്ങളുടെ സ്ക്രിപ്റ്റുകളിലെ വേരിയബിളുകളുടെ സാദ്ധ്യതയെക്കുറിച്ച് ചിന്തിക്കുമ്പോൾ ഷെൽ ലെവൽ വളരെ പ്രധാനമാണ്.
ലളിതമായ ഒന്ന് ഉപയോഗിച്ച് ആരംഭിക്കാം:
നായ = മാസി
echo $ dog
ഒരു ഷെല്ലിൽ മുകളിലുള്ള കമാൻഡ് പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ, maisie എന്ന വാക്ക് ടെർമിനൽ വിൻഡോയിൽ പ്രദർശിപ്പിക്കും.
താഴെ പറയുന്നവ ടൈപ്പ് ചെയ്തുകൊണ്ട് ഒരു പുതിയ ഷെൽ തുറക്കുക:
sh
നിങ്ങൾ ഈ കമാൻഡ് പ്റവറ്ത്തിക്കുന്നു എങ്കിൽ ഒന്നും തിരികെ നൽകില്ല.
echo $ dog
കാരണം ഇത് $ dog വേരിയബിള് ഷെല് ലെവല് മാത്രമേ ലഭ്യമാകുകയുള്ളൂ 2. സബ്ഹെലില് നിന്നും പുറത്തു വരുന്നതിനായി നിങ്ങള് എക്സിറ്റ് ടൈപ്പ് ചെയ്യുക, വീണ്ടും echo $ dog പ്രവര്ത്തിപ്പിക്കുകയാണെങ്കില് maisie എന്ന വാക്ക് വീണ്ടും പ്രത്യക്ഷപ്പെടും.
ഷെല്ലിനുള്ളിലെ ആഗോള വേരിയബിളിന്റെ സ്വഭാവത്തെക്കുറിച്ചും ചിന്തിക്കുക.
ഒരു പുതിയ ടെർമിനൽ വിൻഡോയിൽ ആരംഭിച്ച് താഴെപ്പറയുന്നവ ടൈപ്പ് ചെയ്യുക:
കയറ്റുമതി നായ = മാസി
echo $ dog
നിങ്ങൾ മെസി എന്ന വാക്ക് കാണാം. ഇപ്പോൾ ഒരു subshell തുറന്ന് വീണ്ടും echo $ dog ടൈപ്പ് ചെയ്യുക. നിങ്ങൾ ഒരു സബ്സല്ലിലാണെങ്കിലും മെസി എന്ന വാക്ക് പ്രദർശിപ്പിക്കപ്പെടുമെന്ന് നിങ്ങൾ കാണും.
ഇതിനു കാരണം export കമാൻഡിന് $ dog variable ആഗോളമാക്കി. സബ്ജക്ടിനകത്ത് $ dog വേരിയബിള് മാറ്റിയാല് നിങ്ങള് export കമാന്ഡ് ഉപയോഗിക്കുമെങ്കിലും അതിന്റെ പാരന്റ് ഷെല്ലുകളില് ബാധകമല്ല.
സ്ക്രിപ്റ്റുകൾ രചിക്കുമ്പോൾ നിങ്ങൾ പ്രവർത്തിക്കുന്ന ഷെൽ ലെവൽ അറിയുന്നത് ചില പ്രാധാന്യമാണെന്ന് നിങ്ങൾക്ക് അറിയാമായിരിക്കും.
ഞാൻ നൽകിയ ഉദാഹരണങ്ങൾ വളരെ ലളിതമാണ്, എന്നാൽ ഒരു ഷെൽ സ്ക്രിപ്റ്റിന് മറ്റൊരു ഷെൽ സ്ക്രിപ്റ്റിനെ വിളിക്കാൻ തികച്ചും സാമാന്യവുമാണ്, അത് മറ്റൊരു ഷെൽ സ്ക്രിപ്റ്റ് ഇപ്പോൾ വിവിധ തലങ്ങളിൽ പ്രവർത്തിക്കുന്നു. ഷെൽ ലെവൽ അറിയുന്നത് വളരെ പ്രധാനമാണ്.