چطور می توان مسیر فایل bash script اجرا شده را پیدا کرد
نوشتن برنامه های هوشمند با استفاده از bash script که احتیاج به حداقل تنظیمات دارند کار آسانی نیست و مشکلات زیادی هنگام تولید این برنامه ها وجود دارد. شرح و ارائه راه حل برای یکی از این مشکلات موضوع این مقاله است.
بعضی مواقع نیاز هست برنامه مسیری که در آن قرار دارد را بداند. برای نمونه زمانی که مسیر جاری محلی دیگری غیر محل نصب برنامه را نشان می دهد که جزو پارامتر های مورد نیاز برنامه نیز است و در عین حال خود برنامه برای یافتن فایل های همراهش می بایستی از محل نصبش مطلع باشد.
بعد از مطالعه کلی مقاله و بررسی و ترکیب نتایج به دست آمده تابع زیر را نوشتم که این مشکل را به سادگی حل می کند :
# Begin - Set script working dir and include dependencies getScriptPath () { if [ -d ${0%/*} ] then abspath=$(cd ${0%/*} && echo $PWD/${0##*/}) # to get the path only - not the script name - add pathOnly=`dirname "$abspath"` else progdir=`dirname $0` cd $progdir pathOnly=$PWD fi echo $pathOnly; return } currentPath=$(getScriptPath) cd $currentPath # End - Set script working dir and include dependencies
این تابع در CentOS و در Ubuntu تست شده است ولی بسیار علاقه مندم که بدانم آیا در توزیع های دیگر هم به درستی کار می کند یا خیر.