ബാഷ് സ്ക്രിപ്റ്റ് ഡയറക്ടറി വീണ്ടെടുക്കൽ മനസ്സിലാക്കുന്നു
ബാഷ് സ്ക്രിപ്റ്റുകളിൽ പ്രവർത്തിക്കുമ്പോൾ, സ്ക്രിപ്റ്റ് സ്ഥിതിചെയ്യുന്ന ഡയറക്ടറി അറിയേണ്ടത് പലപ്പോഴും ആവശ്യമാണ്. വർക്കിംഗ് ഡയറക്ടറി സജ്ജീകരിക്കുകയോ സ്ക്രിപ്റ്റിൻ്റെ ലൊക്കേഷനുമായി ബന്ധപ്പെട്ട ഫയലുകൾ ആക്സസ് ചെയ്യുകയോ പോലുള്ള വിവിധ ജോലികൾക്ക് ഇത് ഉപയോഗപ്രദമാകും.
ഈ ഗൈഡിൽ, ഒരു ബാഷ് സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി പാത്ത് സ്ക്രിപ്റ്റിൽ നിന്ന് തന്നെ എങ്ങനെ വീണ്ടെടുക്കാമെന്ന് ഞങ്ങൾ പര്യവേക്ഷണം ചെയ്യും. നിങ്ങളുടെ സ്ക്രിപ്റ്റ് മറ്റ് ആപ്ലിക്കേഷനുകൾക്കായി ഒരു ലോഞ്ചറായി പ്രവർത്തിക്കാൻ താൽപ്പര്യപ്പെടുമ്പോൾ ഈ സമീപനം പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്, അത് ശരിയായ ഫയലുകളിൽ പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
| കമാൻഡ് | വിവരണം |
|---|---|
| readlink -f | ബാഷ് സ്ക്രിപ്റ്റിൻ്റെ സമ്പൂർണ്ണ പാത നൽകിക്കൊണ്ട് ഒരു പ്രതീകാത്മക ലിങ്കിൻ്റെ മുഴുവൻ പാതയും പരിഹരിക്കുന്നു. |
| dirname | സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി നിർണ്ണയിക്കാൻ ഉപയോഗിക്കുന്ന, തന്നിരിക്കുന്ന ഫയൽ പാതയിൽ നിന്ന് ഡയറക്ടറി പാത്ത് എക്സ്ട്രാക്റ്റ് ചെയ്യുന്നു. |
| os.path.realpath(__file__) | പൈത്തണിലെ ഏതെങ്കിലും പ്രതീകാത്മക ലിങ്കുകൾ പരിഹരിച്ച് നിർദ്ദിഷ്ട ഫയലിൻ്റെ കാനോനിക്കൽ പാത്ത് നൽകുന്നു. |
| os.chdir() | പൈത്തണിലെ നിർദ്ദിഷ്ട പാതയിലേക്ക് നിലവിലെ പ്രവർത്തന ഡയറക്ടറി മാറ്റുന്നു. |
| abs_path($0) | പേളിൽ എക്സിക്യൂട്ട് ചെയ്യുന്ന സ്ക്രിപ്റ്റിൻ്റെ കേവല പാത നൽകുന്നു. |
| chdir() | Perl, PHP എന്നിവയിലെ നിർദ്ദിഷ്ട പാതയിലേക്ക് നിലവിലെ പ്രവർത്തന ഡയറക്ടറി മാറ്റുന്നു. |
| system() | Perl-ൽ ഒരു സ്ക്രിപ്റ്റിനുള്ളിൽ നിന്ന് ഒരു ബാഹ്യ കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നു. |
| exec() | PHP-യിലെ ഒരു സ്ക്രിപ്റ്റിനുള്ളിൽ നിന്ന് ഒരു ബാഹ്യ പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുന്നു, നിലവിലെ പ്രക്രിയ മാറ്റിസ്ഥാപിക്കുന്നു. |
വിശദമായ സ്ക്രിപ്റ്റ് വിശദീകരണം
നൽകിയിരിക്കുന്ന സ്ക്രിപ്റ്റുകൾ അവ സ്ഥിതിചെയ്യുന്ന ഡയറക്ടറി നിർണ്ണയിക്കുന്നതിനും പ്രവർത്തന ഡയറക്ടറി ആ പാതയിലേക്ക് മാറ്റുന്നതിനുമായി രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു. ഒരു സ്ക്രിപ്റ്റിന് സ്വന്തം ഡയറക്ടറിയിലുള്ള ഫയലുകളിൽ പ്രവർത്തിക്കേണ്ടിവരുമ്പോൾ അല്ലെങ്കിൽ ആ ലൊക്കേഷനിൽ നിന്ന് മറ്റ് ആപ്ലിക്കേഷനുകൾ സമാരംഭിക്കുമ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്. ഉദാഹരണത്തിന്, ബാഷ് സ്ക്രിപ്റ്റിൽ, കമാൻഡ് readlink -f സ്ക്രിപ്റ്റിൻ്റെ സമ്പൂർണ്ണ പാത ലഭിക്കാൻ ഉപയോഗിക്കുന്നു, കൂടാതെ dirname ആ പാതയിൽ നിന്ന് ഡയറക്ടറി വേർതിരിച്ചെടുക്കുന്നു. തുടർന്ന്, ദി cd കമാൻഡ് നിലവിലെ പ്രവർത്തിക്കുന്ന ഡയറക്ടറിയെ സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറിയിലേക്ക് മാറ്റുന്നു, തുടർന്നുള്ള കമാൻഡുകൾ ശരിയായ സ്ഥലത്ത് പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
പൈത്തൺ ഉദാഹരണത്തിൽ, os.path.realpath(__file__) സ്ക്രിപ്റ്റിൻ്റെ സമ്പൂർണ്ണ പാത ലഭിക്കുന്നു, കൂടാതെ os.chdir() പ്രവർത്തന ഡയറക്ടറി മാറ്റുന്നു. പേൾ സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു abs_path($0) സ്ക്രിപ്റ്റിൻ്റെ സമ്പൂർണ്ണ പാത ലഭിക്കുന്നതിന് ഒപ്പം chdir() ഡയറക്ടറികൾ മാറ്റാൻ. അതുപോലെ, PHP സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു realpath(__FILE__) സ്ക്രിപ്റ്റിൻ്റെ പാത കണ്ടെത്താനും chdir() ഡയറക്ടറി മാറ്റാൻ. ഓരോ സ്ക്രിപ്റ്റും ഒരു ആപ്ലിക്കേഷൻ സമാരംഭിക്കുന്നതിനുള്ള ഒരു കമാൻഡോടെയാണ് അവസാനിക്കുന്നത്, അത് സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറിയുടെ പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
ഒരു ബാഷ് സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി നിർണ്ണയിക്കുന്നു
ബാഷ് സ്ക്രിപ്റ്റ് ഉദാഹരണം
#!/bin/bash# Get the directory of the scriptSCRIPT_DIR=$(dirname "$(readlink -f "$0")")echo "The script is located in: $SCRIPT_DIR"# Change to the script's directorycd "$SCRIPT_DIR" || exit# Execute the application./application
സ്ക്രിപ്റ്റ് ഡയറക്ടറി വീണ്ടെടുക്കുന്നതിനുള്ള പൈത്തൺ ആൾട്ടർനേറ്റീവ്
പൈത്തൺ സ്ക്രിപ്റ്റ് ഉദാഹരണം
#!/usr/bin/env python3import osimport sys# Get the directory of the scriptscript_dir = os.path.dirname(os.path.realpath(__file__))print(f"The script is located in: {script_dir}")# Change to the script's directoryos.chdir(script_dir)# Execute the applicationos.system('./application')
സ്ക്രിപ്റ്റ് ഡയറക്ടറി നിർണ്ണയിക്കുന്നതിനുള്ള പേൾ സ്ക്രിപ്റ്റ്
പേൾ സ്ക്രിപ്റ്റ് ഉദാഹരണം
#!/usr/bin/env perluse Cwd 'abs_path';use File::Basename;# Get the directory of the script$script_dir = dirname(abs_path($0));print "The script is located in: $script_dir\n";# Change to the script's directorychdir $script_dir or die "Cannot change directory: $!";# Execute the applicationsystem('./application');
അതിൻ്റെ ഡയറക്ടറി കണ്ടെത്താൻ PHP സ്ക്രിപ്റ്റ്
PHP സ്ക്രിപ്റ്റ് ഉദാഹരണം
<?php# Get the directory of the script$script_dir = dirname(realpath(__FILE__));echo "The script is located in: $script_dir\n";# Change to the script's directorychdir($script_dir);# Execute the applicationexec('./application');?>
സ്ക്രിപ്റ്റ് ഡയറക്ടറി നിർണ്ണയിക്കുന്നതിനുള്ള ഇതര രീതികൾ
മുമ്പ് സൂചിപ്പിച്ച രീതികൾ മാറ്റിനിർത്തിയാൽ, ഒരു ബാഷ് സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി നിർണ്ണയിക്കുന്നതിനുള്ള മറ്റ് സാങ്കേതികതകളുണ്ട്. പരിസ്ഥിതി വേരിയബിളുകൾ ഉപയോഗിക്കുന്നതാണ് അത്തരമൊരു രീതി. ഉദാഹരണത്തിന്, ദി $BASH_SOURCE വേരിയബിളിൽ ബാഷ് സ്ക്രിപ്റ്റിൻ്റെ ഫയൽ പാത്ത് അടങ്ങിയിരിക്കുന്നു, ഇത് മറ്റ് സ്ക്രിപ്റ്റുകൾ വഴിയുള്ള സ്ക്രിപ്റ്റുകൾക്ക് ഉപയോഗപ്രദമാകും. കമാൻഡ്-ലൈൻ ആർഗ്യുമെൻ്റുകൾ പ്രയോജനപ്പെടുത്തുന്നതാണ് മറ്റൊരു സമീപനം. വിശകലനം ചെയ്തുകൊണ്ട് $0 എക്സിക്യൂട്ട് ചെയ്യുന്ന സ്ക്രിപ്റ്റിൻ്റെ പേര് ഉൾക്കൊള്ളുന്ന പരാമീറ്റർ, പ്രതീകാത്മക ലിങ്കുകൾ അല്ലെങ്കിൽ ഉറവിട ഫയലുകൾ പോലുള്ള വിവിധ സന്ദർഭങ്ങളിൽ നിന്ന് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ നിങ്ങൾക്ക് സ്ക്രിപ്റ്റിൻ്റെ സ്ഥാനം നിർണ്ണയിക്കാനാകും.
സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്ന സന്ദർഭത്തിനനുസരിച്ച് ഈ ബദൽ രീതികൾക്ക് വഴക്കം നൽകാൻ കഴിയും. ഉദാഹരണത്തിന്, പ്രതീകാത്മക ലിങ്കുകൾ കൈകാര്യം ചെയ്യുമ്പോൾ, readlink സ്ക്രിപ്റ്റിൻ്റെ യഥാർത്ഥ പാത പരിഹരിക്കാൻ പലപ്പോഴും ആവശ്യമാണ്. ഈ വ്യത്യസ്ത സാങ്കേതിക വിദ്യകൾ മനസ്സിലാക്കുന്നത്, നിങ്ങളുടെ സ്ക്രിപ്റ്റുകൾ കരുത്തുറ്റതും വിവിധ നിർവ്വഹണ പരിതസ്ഥിതികൾക്ക് അനുയോജ്യവുമാണെന്ന് ഉറപ്പാക്കുകയും അവയുടെ ഉപയോഗവും വിശ്വാസ്യതയും വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു.
പതിവായി ചോദിക്കുന്ന ചോദ്യങ്ങൾ
- ഒരു സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി എനിക്ക് എങ്ങനെ ലഭിക്കും $BASH_SOURCE?
- നിങ്ങൾക്ക് ഉപയോഗിക്കാം dirname "$(realpath "${BASH_SOURCE[0]}")" സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി ലഭിക്കാൻ.
- എന്താണ് തമ്മിലുള്ള വ്യത്യാസം $0 ഒപ്പം $BASH_SOURCE?
- $0 എക്സിക്യൂട്ട് ചെയ്യുന്ന സ്ക്രിപ്റ്റിൻ്റെ പേരാണ് $BASH_SOURCE ഉറവിട സ്ക്രിപ്റ്റിൻ്റെ മുഴുവൻ പാതയും ഉൾക്കൊള്ളുന്നു.
- എനിക്ക് ഉപയോഗിക്കാമോ readlink പ്രതീകാത്മക ലിങ്കുകളോടെ?
- അതെ, readlink -f ഒരു പ്രതീകാത്മക ലിങ്കിൻ്റെ മുഴുവൻ പാതയും പരിഹരിക്കുന്നു.
- എന്താണ് ചെയ്യുന്നത് os.chdir() പൈത്തണിൽ ചെയ്യണോ?
- os.chdir() നിലവിലെ വർക്കിംഗ് ഡയറക്ടറിയെ നിർദ്ദിഷ്ട പാതയിലേക്ക് മാറ്റുന്നു.
- പേളിൽ ഒരു സ്ക്രിപ്റ്റിൻ്റെ കേവല പാത എനിക്ക് എങ്ങനെ ലഭിക്കും?
- ഉപയോഗിക്കുന്നത് abs_path($0) Cwd മൊഡ്യൂളിൽ നിന്ന് സ്ക്രിപ്റ്റിൻ്റെ സമ്പൂർണ്ണ പാത നൽകുന്നു.
- ഒരു എക്സ്റ്റേണൽ പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യാൻ പിഎച്ച്പിയിൽ ഉപയോഗിക്കുന്ന കമാൻഡ് ഏതാണ്?
- exec() PHP-യിൽ ഒരു ബാഹ്യ പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു.
- പിഎച്ച്പിയിലെ ഡയറക്ടറി എങ്ങനെ മാറ്റാം?
- chdir() PHP-യിൽ നിലവിലുള്ള ഡയറക്ടറി മാറ്റാൻ ഉപയോഗിക്കുന്നു.
- എന്ത് കൊണ്ടാണു dirname സ്ക്രിപ്റ്റുകളിൽ ഉപയോഗപ്രദമാണോ?
- dirname തന്നിരിക്കുന്ന ഫയൽ പാതയിൽ നിന്ന് ഡയറക്ടറി പാത്ത് എക്സ്ട്രാക്റ്റുചെയ്യുന്നു, സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി കണ്ടെത്താൻ സഹായിക്കുന്നു.
സ്ക്രിപ്റ്റ് ഡയറക്ടറി വീണ്ടെടുക്കലിനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ
ഒരു ബാഷ് സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി നിർണ്ണയിക്കുന്നത് പ്രാദേശിക ഫയലുകളിൽ പ്രവർത്തിക്കാനോ ആപ്ലിക്കേഷനുകൾ ലോഞ്ച് ചെയ്യാനോ ആവശ്യമായ സ്ക്രിപ്റ്റുകൾക്ക് നിർണായകമായ ഒരു ജോലിയാണ്. തുടങ്ങിയ കമാൻഡുകൾ ഉപയോഗിച്ച് readlink, dirname, കൂടാതെ എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ പ്രയോജനപ്പെടുത്തുന്നതിലൂടെ, സ്ക്രിപ്റ്റുകൾക്ക് അവയുടെ പ്രവർത്തന ഡയറക്ടറി ചലനാത്മകമായി ക്രമീകരിക്കാൻ കഴിയും. സ്ക്രിപ്റ്റ് എവിടെ നിന്ന് എക്സിക്യൂട്ട് ചെയ്താലും അത് ശരിയായി പ്രവർത്തിക്കുന്നുവെന്ന് ഈ സമ്പ്രദായം ഉറപ്പാക്കുന്നു. ഈ രീതികൾ മനസിലാക്കുകയും നടപ്പിലാക്കുകയും ചെയ്യുന്നത് നിങ്ങളുടെ സ്ക്രിപ്റ്റുകളുടെ വഴക്കവും വിശ്വാസ്യതയും വർദ്ധിപ്പിക്കുകയും വിവിധ ആപ്ലിക്കേഷനുകൾക്കും ഉപയോഗ കേസുകൾക്കും അവയെ കൂടുതൽ കാര്യക്ഷമമാക്കുകയും ചെയ്യുന്നു.