ما قبلاً در باره یک جفت از گزینههای Bash که برای اشکالزدایی اسکریپتها، سودمند میباشند، صحبت کردیم. در این بخش نگاه عمیقتری به گزینههای Bash خواهیم داشت .
از گزینه -o
با دستور set برای نمایش تمام گزینههای شل استفاده کنید:
willy:~>
set-o
allexport off braceexpand on emacs on errexit off hashall on histexpand on history on ignoreeof off interactive-comments on keyword off monitor on noclobber off noexec off noglob off nolog off notify off nounset off onecmd off physical off posix off privileged off verbose off vi off xtrace off
صفحههای Bash Info ، بخش xtrace
، برابر با تعیین کردن set -x
میباشد.
گرینههای شل هم برای حالت پیشفرض در موقع فراخونی شل، و هم در حین عملیات شل، میتوانند به طور متفاوت تنظیم شوند. همچنین میتوانند در فایلهای پیکربندی شل درج گردند.
دستور زیر یک اسکریپت را در وضعیت سازگار با POSIX اجرا میکند:
willy:~/scripts>
bash--posix
script.sh
برای تغییر محیط جاری به طور موقتی، یا برای استفاده در یک اسکریپت، ترجیحاً باید set را به کار ببریم. استفاده از - (خط تیره) برای فعال کردن یک گزینه، و + برای غیر فعال کردن:
willy:~/test>
set-o
noclobber
willy:~/test>
touchtest
willy:~/test>
date >test
bash: test: cannot overwrite existing filewilly:~/test>
set+o
noclobber
willy:~/test>
date >test
مثال بالا گزینه noclobber
را نمایش میدهد، که با تغییر جهت عملیات از رونویسی شدن فایلهای موجود، ممانعت میکند. همینطور با گزینههای یک کاراکتری، به عنوان نمونه -u
که وقتی تنظیم شود، با متغیرهای تعریف نشده به عنوان خطا رفتار میکند، و شل غیرمحاورهای در رویارویی با چنین خطاهایی خارج میشود:
willy:~>
echo$VAR
willy:~>
set-u
willy:~>
echo$VAR
bash: VAR: unbound variable
این گزینه نیز برای تشخیص اختصاص محتوای ناصحیح به متعیرها، مفید است: همان خطا نیز رخ میدهد، به عنوان نمونه، وقتی یک رشته کاراکتری به متغیری اختصاص یابد، که به طور صریح به عنوان نگهدارنده عدد صحیح تعریف شده است.
آخرین مثال که در پایین آمده، گزینه noglob
، که ازبسط یافتن کاراکترهای ویژه پیشگیری میکندرا نمایش میدهد:
willy:~/testdir>
set-o
noglob
willy:~/testdir>
touch*
willy:~/testdir>
ls-l
*
-rw-rw-r-- 1 willy willy 0 Feb 27 13:37 *