چطور می توان مسیر فایل bash script اجرا شده را پیدا کرد

بلاگ
Linux
Sys Administration

نوشتن برنامه های هوشمند با استفاده از 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 تست شده است ولی بسیار علاقه مندم که بدانم آیا در توزیع های دیگر هم به درستی کار می کند یا خیر.

امتیاز شما: خالی میانگین: 1 (61 رای)