2012, ജനുവരി 4, ബുധനാഴ്‌ച

പാത്ത് എന്ന വില്ലൻ

ഇതൊരു പോസ്റ്റാക്കി ഇടാൻ മാത്രമുണ്ടോ എന്ന തോന്നലുണ്ട്. എങ്കിലും ആർക്കെങ്കിലും സമാനമായ പ്രശ്നങ്ങൾ ഉണ്ടെങ്കിൽ പരിഹരിക്കാൻ സഹായമാകട്ടെ എന്ന വിചാരത്തിൽ എഴുതുന്നു.

പണ്ട് ഡോസ് ഉപയോഗിക്കുന്ന കാലത്ത് വളരെയധികം ഉപയോഗിച്ചിരുന്ന ഒരു നിർദ്ദേശമാണ് പാത്ത് (path). നിങ്ങൾ നൽകുന്ന ഒരു നിർദ്ദേശം പ്രവർത്തിക്കാനുള്ള പ്രോഗ്രാം എവിടെയൊക്കെയായിരിക്കും എന്ന ഒരു കുറിപ്പാണ് പാത്ത് എന്നത്. അതായത് നിങ്ങൾ‌ ഒരു നിർദ്ദേശം നൽകുകയാണെങ്കിൽ ആ നിർദ്ദേശം പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള പ്രോഗ്രാം ഈ കുറിപ്പിൽ പറഞ്ഞിരിക്കുന്ന ഡയറക്റ്ററികളിൽ (ഫോൾഡറുകളിൽ) തിരയുകയും അവിടെയെവിടെയെങ്കിലും കാണുകയാണെങ്കിൽ പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുകയും ചെയ്യും.

ടെർമിനലിൽ echo $PATH എന്ന നിർദ്ദേശം ടൈപ്പ് ചെയ്ത് എന്റർ ചെയ്താൽ നിലവിലെ പാത്ത് കാണാൻ സാധിക്കും. 

ഇവിടെ എട്ട് ഡയറക്റ്ററികളെ : ചിഹ്നം ഉപയോഗിച്ച് വേർതിരിച്ചെഴുതിയിരിക്കുന്നത് ശ്രദ്ധിക്കുക. നൽകുന്ന ഒരു നിർദ്ദേശം പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള പ്രോഗ്രാം ഇതിൽ ഏതെങ്കിലും ഒരു ഡയറക്റ്ററിയിൽ ഉണ്ടെങ്കിൽ അത് പ്രവർത്തിക്കും. ഇല്ലെങ്കിൽ അത്തരം ഒരു നിർദ്ദേശം യോഗ്യമല്ലെന്ന സന്ദേശം ലഭിക്കുകയും ചെയ്യും.

ഇനി PATH= എന്നു ടെർമിനലിൽ കൊടുത്ത് എന്തെങ്കിലും നിർദ്ദേശം നൽകി നോക്കൂ. ഉദാഹരണം താഴെയുള്ള സ്ക്രീൻഷോട്ടിൽ കാണാം.


ഇവിടെ PATH= എന്നു നൽകിയതിലൂടെ പ്രോഗ്രാമുകൾ തിരയേണ്ട പാതകൾ ശൂന്യമാക്കുകയാണ് ചെയ്തത്. അതുകൊണ്ട് നേരത്തേ പ്രവർത്തിച്ചിരുന്ന പ്രോഗ്രാമുകൾ പോലും പ്രവർത്തിക്കാതിരുന്നത് ശ്രദ്ധിക്കുക.

പാത്തിന്റെ പ്രശ്നം


ഇനി, പ്രശ്നം പറയാം. സുഹൃത്തിന്റെ കമ്പ്യൂട്ടറിൽ എന്തൊക്കെയോ‌ ഇൻസ്റ്റോൾ ചെയ്തതിനു ശേഷം ഇപ്പോൾ‌ ഉബുണ്ടുവിൽ ലോഗിൻ ചെയ്യാനേ പറ്റുന്നില്ലെന്നതായിരുന്നു പ്രശ്നം. ശരിയായ പാസ്വേഡ് കൊടുത്താലും, എന്തൊക്കെയോ മെസേജ് കാണിച്ച് ലോഗിൻ സ്ക്രീനിൽത്തന്നെ തിരിച്ചെത്തുന്നു.


കണ്ട്രോൾ+ഓൾട്ട്+എഫ്1 അടിച്ച് ടെക്റ്റ് ടെർമിനൽ വഴി ലോഗിൻ ചെയ്തപ്പോൾ (ഇവിടെ മറ്റൊരു പുകിലുണ്ടായിരുന്നു. അതിവിടെ വിവരിക്കുന്നില്ല) ഒരു പ്രോഗ്രാമും പ്രവർത്തിക്കുന്നില്ല. echo PATH ടൈപ്പ് ചെയ്തപ്പോൾ /bin, /sbin തുടങ്ങിയ പ്രധാന പ്രോഗ്രാം ഡയറക്റ്ററികളിലേക്കൊന്നും പാത്ത് സെറ്റ് ചെയ്തിട്ടില്ലെന്ന് മനസിലായി.

/etc/environment എന്ന ഫയലിലാണ് കമ്പ്യൂട്ടർ പ്രവർത്തിച്ചു തുടങ്ങുമ്പോഴുള്ള പാത്ത് സെറ്റിങ് നടത്തുന്നത്. ഈ ഫയലിനകത്ത് നൽകിയിരിക്കുന്ന PATH= എന്നു തുടങ്ങുന്ന നിർവചനമനുസരിച്ചുള്ള പാത്ത് ആണ് ലോഗിൻ ചെയ്യുമ്പോൾത്തന്നെ ഓരോ യൂസർക്കും ലഭിക്കുന്നത്. നോട്ടിലസ് (ഫയൽ മാനേജർ) ഉപയോഗിച്ച് /etc ഡയറക്റ്ററിയിലെത്തി environment എന്ന ഫയൽ തുറന്നുനോക്കിയാൽ, ആരംഭത്തിൽത്തന്നെ ലഭിക്കുന്ന പാത്ത് കാണാനാകും.


എന്റെ കമ്പ്യൂട്ടറിലെ സ്വതേയുള്ള പാത്ത് നിർവചനം മുകളിൽ ശ്രദ്ധിക്കുക. സുഹൃത്തിന്റെ കമ്പ്യൂട്ടറിൽ ഈ പാത്ത് നിർവചനത്തിനു പുറമേ മറ്റൊരു തെറ്റായ പാത്ത് നിർവചനം കൂടി ഉണ്ടായിരുന്നു. മുകളിൽപ്പറഞ്ഞ environment ഫയൽ തുറന്ന് ആ തെറ്റായ നിർവചനം ഒഴിവാക്കി, കമ്പ്യൂട്ടർ ഒന്ന് റീബൂട്ട് ചെയ്തപ്പോൾ പ്രശ്നങ്ങൾക്ക് പരിഹാരമായി.

ശ്രദ്ധിക്കുക

ഗ്രാഫിക്കൽ യൂസർ ഇന്റർഫേസ് ഇല്ലാത്തതുകൊണ്ട് vi എഡിറ്റർ ഉപയോഗിച്ചാണ് environment ഫയൽ തുറന്ന് തിരുത്തിയത്. environment എന്ന ഫയൽ സിസ്റ്റം ഫയൽ ആയതിനാൽ sudo vi /etc/environment എന്ന നിർദ്ദേശം കൊടുത്ത് അതു തുറന്നാലേ അതിൽ തിരുത്തലുകൾ‌ വരുത്താനാകൂ. അതുപോലെ sudo, vi തുടങ്ങിയ നിർദ്ദേശങ്ങൾ പ്രവർത്തിക്കുന്നതിന് തുടക്കം തന്നെ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin എന്ന നിർദ്ദേശം നൽകി പാത്ത് താൽക്കാലികമായി നിർവചിക്കുകയും ചെയ്തു.