| ZSHOPTIONS(1) | General Commands Manual | ZSHOPTIONS(1) |
نام (NAME)
zshoptions - گزینههای zsh
تعیین گزینهها (SPECIFYING OPTIONS)
گزینهها اساساً با نامشان شناخته میشوند. این نامها به بزرگی و کوچکی حروف حساس نیستند و زیرخطها نادیده گرفته میشوند. برای نمونه، `allexport' معادل `A__lleXP_ort' است.
مفهوم یک نام گزینه را میتوان با افزودن پیشوند `no' به ابتدای آن معکوس کرد؛ بنابراین `setopt No_Beep' معادل `unsetopt beep' است. این معکوسسازی تنها یکبار قابل انجام است، در نتیجه `nonobeep' مترادفی برای `beep' نیست. بههمین ترتیب، `tify' مترادفی برای `nonotify' (معکوسِ `notify') نیست.
برخی گزینهها دارای یک یا چند نام تکحرفی نیز هستند. دو مجموعه از گزینههای تکحرفی وجود دارد: یکی بهطور پیشفرض استفاده میشود و دیگری برای شبیهسازی sh/ksh به کار میرود (زمانی که گزینهٔ SH_OPTION_LETTERS تنظیم شده باشد). گزینههای تکحرفی را میتوان در خط فرمان شل یا با دستورهای توکار set، setopt و unsetopt بهصورت گزینههای معمول یونیکس با پیشوند `-' استفاده کرد.
مفهوم گزینههای تکحرفی را میتوان با استفاده از `+' بهجای `-' معکوس کرد. برخی از نامهای گزینههای تکحرفی به غیرفعال بودن یک گزینه اشاره دارند که در این صورت، معکوسِ آن نام به فعال بودن آن گزینه اشاره میکند. برای نمونه، `+n' نام کوتاه `exec' است و `-n' نام کوتاه معکوس آن، یعنی `noexec' است.
در رشتههای گزینههای تکحرفی ارائهشده به شل در زمان راهاندازی، فاصلههای خالی انتهایی نادیده گرفته میشوند؛ برای نمونه، رشتهٔ `-f ' دقیقاً مانند `-f' در نظر گرفته میشود، اما رشتهٔ `-f i' یک خطا محسوب میشود. دلیل این امر آن است که بسیاری از سیستمهایی که سازوکار `#!' را برای فراخوانی اسکریپتها پیادهسازی میکنند، فاصلههای خالی انتهایی را حذف نمیکنند.
تنظیم گزینهها در دامنهٔ یک تابع نیز ممکن است. توضیحات گزینهٔ LOCAL_OPTIONS در زیر را ببینید.
شرح گزینهها (DESCRIPTION OF OPTIONS)
در فهرست زیر، گزینههایی که بهطور پیشفرض در تمام حالتهای شبیهسازی فعال هستند با <D> مشخص شدهاند؛ گزینههایی که تنها در شبیهسازیهای csh، ksh، sh یا zsh بهطور پیشفرض فعالاند، بهترتیب با <C>، <K>، <S> و <Z> مشخص شدهاند. هنگام فهرست کردن گزینهها (توسط `setopt'، `unsetopt'، `set -o' یا `set +o')، مواردی که بهطور پیشفرض فعال هستند با پیشوند `no' در فهرست ظاهر میشوند. از این رو (مگر اینکه KSH_OPTION_PRINT تنظیم شده باشد)، `setopt' تمام گزینههایی را نشان میدهد که وضعیت آنها نسبت به مقدار پیشفرض تغییر یافته است.
تغییر دایرکتوریها
- AUTO_CD (-J)
- اگر دستوری صادر شود که نتوان آن را بهعنوان یک دستور معمولی اجرا کرد، و آن دستور نام یک دایرکتوری باشد، دستور cd را به مقصد آن دایرکتوری اجرا کن. این گزینه تنها زمانی قابل اعمال است که گزینهٔ SHIN_STDIN تنظیم شده باشد، یعنی زمانی که دستورها از ورودی استاندارد خوانده میشوند. این گزینه برای استفادهٔ تعاملی طراحی شده است؛ توصیه میشود در اسکریپتها برای جلوگیری از ابهام، cd بهطور صریح استفاده شود.
- AUTO_PUSHD (-N)
- باعث میشود cd دایرکتوری قبلی را به پشتهٔ دایرکتوری اضافه کند.
- CDABLE_VARS (-T)
- اگر آرگومان دستور cd (یا یک cd ضمنی در صورت تنظیم بودن گزینهٔ AUTO_CD) یک دایرکتوری نباشد و با یک اسلش آغاز نشود، تلاش کن تا عبارت را طوری بسط دهی که گویی یک `~' در ابتدای آن قرار داشته است (بخش `Filename Expansion' را ببینید).
- CD_SILENT
- هرگز پس از cd (خواه صریح باشد یا ضمنی با تنظیم گزینهٔ AUTO_CD) دایرکتوری کاری را چاپ نکن. دستور cd بهطور معمول زمانی دایرکتوری کاری را چاپ میکند که آرگومان دادهشده به آن -، یک مدخل پشته، یا نام دایرکتوری یافتشده در CDPATH باشد. توجه داشته باشید که این رفتار با رفتار چاپ پشته در pushd که توسط PUSHD_SILENT کنترل میشود، متفاوت است. این گزینه بر تأثیرات مرتبط با چاپ در POSIX_CD اولویت دارد.
- CHASE_DOTS
- هنگام تغییر به دایرکتوری حاوی بخش مسیر `..' که در حالت عادی بهمعنای لغو بخش قبلی در مسیر در نظر گرفته میشود (به عبارت دیگر، `foo/..' از مسیر حذف میشود، یا اگر `..' بخش نخست مسیر باشد، آخرین بخش از دایرکتوری کاری فعلی حذف میشود)، مسیر را به دایرکتوری فیزیکی تبدیل کن. این گزینه توسط CHASE_LINKS لغو میشود.
برای نمونه، فرض کنید /foo/bar پیوندی به دایرکتوری /alt/rod باشد. بدون فعال بودن این گزینه، `cd /foo/bar/..' به /foo تغییر مییابد؛ با فعال بودن آن، به /alt تغییر مییابد. همین امر زمانی که دایرکتوری فعلی /foo/bar باشد و `cd ..' استفاده شود نیز صدق میکند. توجه داشته باشید که تمام پیوندهای نمادین دیگر در مسیر نیز حل خواهند شد.
- CHASE_LINKS (-w)
- هنگام تغییر دایرکتوری، پیوندهای نمادین را به مقادیر واقعی آنها حل کن. این گزینه اثر CHASE_DOTS را نیز بههمراه دارد، یعنی بخش مسیر `..' به عنوان ارجاع به والد فیزیکی در نظر گرفته میشود، حتی اگر بخش مسیر قبلی یک پیوند نمادین باشد.
- POSIX_CD <K> <S>
- رفتار دستورهای cd، chdir و pushd را تغییر میدهد تا با استاندارد POSIX سازگارتر شوند. رفتار در صورت غیرفعال بودن این گزینه در مستندات دستور توکار cd در zshbuiltins(1) شرح داده شده است. اگر این گزینه تنظیم شود، شل دایرکتوریهای زیر دایرکتوری محلی (`.') را تا پیش از بررسی تمام دایرکتوریهای موجود در cdpath بررسی نمیکند، و دستورهای cd و chdir آرگومانهایی به فرم `{+|-}n' را بهعنوان مدخلهای پشتهٔ دایرکتوری شناسایی نمیکنند.
همچنین در صورت تنظیم این گزینه، شرایطی که تحت آن شل دایرکتوری جدید را پس از تغییر به آن چاپ میکند، تغییر مییابد. این رفتار دیگر تنها به شلهای تعاملی محدود نیست (گرچه چاپ پشتهٔ دایرکتوری با pushd همچنان محدود به شلهای تعاملی است)؛ و هرگونه استفاده از مؤلفهای از CDPATH، شامل `.' اما بهجز مؤلفهٔ خالی که در غیر این صورت بهعنوان `.' تلقی میشود، باعث چاپ شدن دایرکتوری خواهد شد.
- PUSHD_IGNORE_DUPS
- نسخههای تکراری از یک دایرکتوری یکسان را به پشتهٔ دایرکتوری اضافه نکن.
- PUSHD_MINUS
- هنگامی که همراه با یک عدد برای مشخص کردن دایرکتوری در پشته استفاده میشود، معانی `+' و `-' را با یکدیگر جابهجا میکند.
- PUSHD_SILENT (-E)
- پس از pushd یا popd، پشتهٔ دایرکتوری را چاپ نکن.
- PUSHD_TO_HOME (-D)
- دستور pushd بدون آرگومان را وادار میکند تا مانند `pushd $HOME' عمل کند.
- ALWAYS_LAST_PROMPT <D>
- اگر تنظیم نشده باشد، توابع کلیدی که تکمیلها را فهرست میکنند در صورت دریافت یک آرگومان عددی، تلاش میکنند به آخرین اعلان (prompt) بازگردند. اگر تنظیم شده باشد، این توابع در صورتی که هیچ آرگومان عددی دریافت نکنند، تلاش میکنند به آخرین اعلان بازگردند.
- ALWAYS_TO_END
- اگر تکمیلی در حالی که مکاننما درون یک کلمه قرار دارد انجام شود و یک تکمیل کامل درج گردد، مکاننما به انتهای کلمه منتقل میشود. به این معنی که اگر یک تطابق منفرد درج شود یا تکمیل منویی انجام گیرد، مکاننما به انتهای کلمه منتقل خواهد شد.
- AUTO_LIST (-9) <D>
- در زمان تکمیل مبهم، گزینهها را به صورت خودکار فهرست میکند.
- AUTO_MENU <D>
- پس از دومین درخواست متوالی برای تکمیل، مثلاً با فشردن مکرر کلید tab، به طور خودکار از تکمیل منویی استفاده میکند. این گزینه توسط MENU_COMPLETE لغو میشود.
- AUTO_NAME_DIRS
- هر پارامتری که روی نام مطلق یک دایرکتوری تنظیم شود، بلافاصله به نامی برای آن دایرکتوری تبدیل میشود که توسط توالیهای اعلان `%~' و موارد مرتبط استفاده خواهد شد، و زمانی که تکمیل روی کلمهای که با `~' شروع میشود انجام گیرد، در دسترس خواهد بود. (در غیر این صورت، ابتدا باید از پارامتر در قالب `~param' استفاده شود.)
- AUTO_PARAM_KEYS <D>
- اگر نام یک پارامتر تکمیل شد و یک نویسهٔ بعدی (معمولاً یک فاصله) به طور خودکار درج گردید، و نویسهٔ بعدی تایپشده یکی از مواردی باشد که باید مستقیماً پس از نام بیایند (مانند `}'، `:' و غیره)، نویسهٔ اضافهشدهٔ خودکار حذف میشود تا نویسهٔ تایپشده بلافاصله پس از نام پارامتر قرار گیرد. تکمیل در یک بسط آکولاد نیز به طور مشابه تحت تأثیر قرار میگیرد: نویسهٔ اضافهشده یک `,' است که اگر بلافاصله `}' تایپ شود، حذف خواهد شد.
- AUTO_PARAM_SLASH <D>
- اگر پارامتری تکمیل شود که محتوای آن نام یک دایرکتوری است، به جای فاصله یک اسلش در انتها اضافه میکند.
- AUTO_REMOVE_SLASH <D>
- هنگامی که آخرین نویسهٔ حاصل از یک تکمیل یک اسلش باشد و نویسهٔ بعدی تایپشده یک جداکنندهٔ کلمه، یک اسلش، یا نویسهای باشد که به یک دستور پایان میدهد (مانند یک نقطهویرگول یا یک امپرسند)، اسلش را حذف میکند.
- BASH_AUTO_LIST
- در زمان یک تکمیل مبهم، هنگامی که تابع تکمیل دو بار پیاپی فراخوانی شود، گزینهها را به صورت خودکار فهرست میکند. این گزینه نسبت به AUTO_LIST اولویت دارد. تنظیمات LIST_AMBIGUOUS رعایت میشود. اگر AUTO_MENU تنظیم شده باشد، رفتار منویی با سومین فشردن کلید آغاز خواهد شد. توجه داشته باشید که این گزینه با MENU_COMPLETE کار نخواهد کرد، چرا که در آن صورت فراخوانیهای مکرر تکمیل بلافاصله در میان فهرست میچرخند.
- COMPLETE_ALIASES
- از جایگزینی درونی نامهای مستعار در خط فرمان پیش از تلاش برای تکمیل جلوگیری میکند. تأثیر این گزینه آن است که نام مستعار را برای اهداف تکمیل به یک دستور متمایز تبدیل میکند.
- COMPLETE_IN_WORD
- اگر تنظیم نشده باشد، در صورت شروع تکمیل، مکاننما به انتهای کلمه منتقل میشود. در غیر این صورت، در جای خود باقی میماند و تکمیل از هر دو سر انجام میشود.
- GLOB_COMPLETE
- هنگامی که کلمهٔ فعلی دارای یک الگوی glob است، تمام کلمات حاصل از بسط را درج نکن، بلکه مانند تکمیل تطابقها را تولید کن و مانند MENU_COMPLETE در میان آنها بچرخ. تطابقها به گونهای تولید میشوند که گویی یک `*' به انتهای کلمه اضافه شده، یا در صورت تنظیم COMPLETE_IN_WORD در محل مکاننما درج شده است. این در واقع از تطبیق الگو استفاده میکند، نه globbing، بنابراین نه تنها برای فایلها بلکه برای هر تکمیلی مانند گزینهها، نامهای کاربری و غیره کار میکند.
توجه داشته باشید که هنگام استفاده از تطبیقدهندهٔ الگو، کنترل تطبیق (به عنوان مثال، تطبیق حساس نبودن به حروف کوچک و بزرگ یا تطبیق مهارشده) قابل استفاده نیست. این محدودیت تنها زمانی اعمال میشود که کلمهٔ فعلی حاوی یک الگو باشد؛ صرفاً فعال کردن گزینهٔ GLOB_COMPLETE این اثر را ندارد.
- HASH_LIST_ALL <D>
- هر زمان که یک تکمیل دستور یا تصحیح املا انجام شود، مطمئن میشود که ابتدا کل مسیر دستور هش شده است. این کار اولین تکمیل را کندتر میکند، اما از گزارشهای نادرست خطاهای املایی جلوگیری میکند.
- LIST_AMBIGUOUS <D>
- این گزینه زمانی کار میکند که AUTO_LIST یا BASH_AUTO_LIST نیز تنظیم شده باشند. اگر پیشوند غیرمبهمی برای درج در خط فرمان وجود داشته باشد، این کار بدون نمایش فهرست تکمیل انجام میشود؛ به عبارت دیگر، رفتار فهرستبندی خودکار تنها زمانی اتفاق میافتد که هیچ چیزی درج نشود. در مورد BASH_AUTO_LIST، این بدان معنی است که نمایش فهرست تا سومین فراخوانی تابع به تعویق میافتد.
- LIST_BEEP <D>
- در زمان یک تکمیل مبهم بوق میزند. به طور دقیقتر، این گزینه ویجتهای تکمیل را وادار میکند که در یک تکمیل مبهم وضعیت ۱ را برگردانند، که در صورت تنظیم بودن گزینهٔ BEEP، باعث بوق زدن پوسته میشود؛ اگر تکمیل از یک ویجت تعریفشده توسط کاربر فراخوانی شود، این رفتار ممکن است تغییر کند.
- LIST_PACKED
- با چاپ تطابقها در ستونهایی با پهنای متفاوت، تلاش میکند فهرست تکمیل را کوچکتر (اشغال سطرهای کمتر) کند.
- LIST_ROWS_FIRST
- تطابقها را در فهرستهای تکمیل به صورت مرتبشدهٔ افقی میچیند، یعنی تطابق دوم در سمت راست تطابق اول قرار میگیرد، نه مانند حالت معمول در زیر آن.
- LIST_TYPES (-X) <D>
- هنگام فهرست کردن فایلهایی که تکمیلهای احتمالی هستند، نوع هر فایل را با یک علامت شناسایی در انتها نشان میدهد.
- MENU_COMPLETE (-Y)
- در زمان یک تکمیل مبهم، به جای فهرست کردن احتمالات یا بوق زدن، بلافاصله اولین تطابق را درج میکند. سپس هنگامی که تکمیل دوباره درخواست شد، اولین تطابق را حذف کرده و تطابق دوم را درج میکند، و غیره. وقتی تطابق دیگری وجود نداشته باشد، دوباره به اولی بازمیگردد. از reverse-menu-complete میتوان برای چرخش در فهرست در جهت معکوس استفاده کرد. این گزینه بر AUTO_MENU برتری دارد.
- REC_EXACT (-S)
- اگر رشتهٔ موجود در خط فرمان دقیقاً با یکی از تکمیلهای احتمالی مطابقت داشته باشد، پذیرفته میشود، حتی اگر تکمیل دیگری وجود داشته باشد (یعنی همان رشته به همراه چیز دیگری که اضافه شده است) که آن هم تطابق داشته باشد.
- BAD_PATTERN (+2) <C> <Z>
- اگر الگویی برای تولید نام فایل بدساخت باشد، یک پیام خطا چاپ میشود. (اگر این گزینه غیرفعال باشد، الگو بدون تغییر باقی خواهد ماند.)
- BARE_GLOB_QUAL <Z>
- در یک الگوی glob، در صورتی که یک جفت پرانتز انتهایی شامل نویسههای `|'، `(' یا (در صورت خاص بودن) `~' نباشد، با آن به عنوان فهرست توصیفکننده (qualifier list) رفتار میشود. بخش `Filename Generation' را ببینید.
- BRACE_CCL
- عبارتهای درون آکولاد را که در حالت عادی تحت بسط آکولاد قرار نمیگیرند، به فهرستی از تمام نویسهها با ترتیب واژگانی بسط میدهد. بخش `Brace Expansion' را ببینید.
- CASE_GLOB <D>
- تطبیق الگو (تولید نام فایل) را به بزرگی و کوچکی حروف حساس میکند. توجه داشته باشید که سایر استفادهها از الگوها همواره به بزرگی و کوچکی حروف حساس هستند. اگر این گزینه غیرفعال باشد، وجود هر نویسهای که برای تولید نام فایل خاص است، باعث تطبیق غیرحساس به بزرگی و کوچکی حروف خواهد شد. برای مثال، cvs(/) به دلیل وجود پرچم تطبیق الگو میتواند با دایرکتوری CVS مطابقت یابد (مگر اینکه گزینهٔ BARE_GLOB_QUAL غیرفعال باشد).
- CASE_MATCH <D>
- عبارتهای باقاعده را که از پودمان zsh/regex استفاده میکنند (شامل تطبیقها با =~) به بزرگی و کوچکی حروف حساس میکند.
- CASE_PATHS
- اگر CASE_PATHS تنظیم نشده باشد (پیشفرض)، هرگاه یک نویسهٔ خاص در هر بخشی از مسیر ظاهر شود، CASE_GLOB بر تفسیر تمام بخشهای مسیر اثر میگذارد. هنگامی که CASE_PATHS تنظیم شود، بخشهایی از مسیر فایل که شامل نویسههای خاص تولید نام فایل نیستند، همواره به بزرگی و کوچکی حروف حساس خواهند بود؛ بدین ترتیب NO_CASE_GLOB تنها به بخشهایی که حاوی نویسههای تطبیق الگو هستند محدود میشود.
توجه داشته باشید که اگر خود سیستمفایل به بزرگی و کوچکی حروف حساس نباشد، آنگاه CASE_PATHS هیچ اثری نخواهد داشت.
- CSH_NULL_GLOB <C>
- اگر الگویی برای تولید نام فایل هیچ تطابقی نداشته باشد، الگو را از فهرست آرگومانها حذف میکند؛ خطایی گزارش نمیشود مگر اینکه تمام الگوهای درون یک دستور هیچ تطابقی نداشته باشند. این گزینه بر NOMATCH اولویت دارد.
- EQUALS <Z>
- بسط نام فایل با = را انجام میدهد. (بخش `Filename Expansion' را ببینید.)
- EXTENDED_GLOB
- با نویسههای `#'، `~' و `^' به عنوان بخشی از الگوها برای تولید نام فایل و غیره رفتار میکند. (یک `~' ابتدایی بدون نقلقول همواره بسط دایرکتوری نامگذاریشده را تولید میکند.)
- FORCE_FLOAT
- با ثابتها در ارزیابی محاسباتی، حتی بدون استفاده از ممیز اعشاری، به عنوان ممیز شناور (floating point) رفتار خواهد شد؛ مقادیر متغیرهای عدد صحیح هنگام استفاده در عبارات محاسباتی به ممیز شناور تبدیل خواهند شد. اعداد صحیح در هر مبنایی تبدیل میشوند.
- GLOB (+F, ksh: +f) <D>
- تولید نام فایل (globbing) را انجام میدهد. (بخش `Filename Generation' را ببینید.)
- GLOB_ASSIGN <C>
- اگر این گزینه تنظیم شود، تولید نام فایل (globbing) در سمت راست انتسابهای پارامتر اسکالر به شکل `name=pattern (مانند `foo=*') انجام میشود. اگر نتیجه بیش از یک کلمه داشته باشد، پارامتر به آرایهای با آن کلمات به عنوان آرگومان تبدیل خواهد شد. این گزینه صرفاً برای سازگاری با گذشته ارائه شده است: تطبیق الگو همیشه در سمت راست انتسابهای آرایهای به شکل `name=(value)' (مانند `foo=(*)') انجام میشود و این ساختار به دلیل وضوح بیشتر توصیه میگردد؛ با فعال بودن این گزینه، پیشبینی اینکه نتیجه یک آرایه خواهد بود یا یک اسکالر امکانپذیر نیست.
- GLOB_DOTS (-4)
- نیازی نیست که یک `.' در ابتدای نام فایل بهصورت صریح تطبیق داده شود.
- GLOB_STAR_SHORT
- هنگامی که این گزینه تنظیم شده باشد و تطبیق الگوی پیشفرض به سبک zsh در حال اجرا باشد، الگوی `**/*' میتواند به `**' و الگوی `***/*' میتواند به *** خلاصه شود. از این رو `**.c' فایلی را که به .c ختم میشود در هر زیردایرکتوری پیدا میکند، و `***.c' همین کار را همراه با دنبال کردن پیوندهای نمادین انجام میدهد. قرار گرفتن یک / بلافاصله پس از `**' یا `***' الگو را مجبور میکند تا به عنوان شکل خلاصهنشده در نظر گرفته شود.
- GLOB_SUBST <C> <K> <S>
- با تمام نویسههای حاصل از بسط پارامتر به عنوان نویسههای واجد شرایط برای بسط نام فایل و تولید نام فایل رفتار میکند، و تمام نویسههای حاصل از جایگزینی دستور را واجد شرایط تولید نام فایل در نظر میگیرد. آکولادها (و ویرگولهای میان آنها) واجد شرایط بسط نمیشوند.
- HIST_SUBST_PATTERN
- جایگزینیها با استفاده از اصلاحکنندههای تاریخچهٔ :s و :& به جای تطبیق رشتهای با تطبیق الگو انجام میشوند. این امر در هر جایی که اصلاحکنندههای تاریخچه معتبر باشند، از جمله توصیفکنندههای glob و پارامترها رخ میدهد. بخش `Modifiers' در zshexpn(1) را ببینید.
- IGNORE_BRACES (-I) <S>
- بسط آکولاد را انجام نمیدهد. بنا به دلایل تاریخی، این گزینه شامل اثر گزینهٔ IGNORE_CLOSE_BRACES نیز میشود.
- IGNORE_CLOSE_BRACES
- هنگامی که نه این گزینه و نه IGNORE_BRACES تنظیم نشده باشند، یک نویسهٔ منفرد آکولاد بسته `}' در هر نقطهای از خط فرمان از نظر نحوی معنادار است. این امر موجب میشود که پیش از آکولادی که یک تابع یا ساختار پوستهٔ جاری را خاتمه میدهد، به هیچ نقطهویرگول یا خط جدیدی نیاز نباشد. هنگامی که هر یک از این گزینهها تنظیم شده باشد، آکولاد بسته تنها در موقعیت دستور از نظر نحوی معنادار خواهد بود. برخلاف IGNORE_BRACES، این گزینه بسط آکولاد را غیرفعال نمیکند.
برای مثال، در صورت غیرفعال بودن هر دو گزینه، یک تابع میتواند به شیوهٔ زیر تعریف شود:
args() { echo $# }
در حالی که اگر هر یک از گزینهها تنظیم شده باشد، این شیوه کار نمیکند و چیزی معادل حالت زیر لازم است:
args() { echo $#; }
- KSH_GLOB <K>
- در تطبیق الگو، تفسیر پرانتزها تحت تأثیر یک `@'، `*'، `+'، `?' یا `!' پیش از آن قرار میگیرد. بخش `Filename Generation' را ببینید.
- MAGIC_EQUAL_SUBST
- تمام آرگومانهای بدون نقلقول به شکل `anything=expression' که پس از نام دستور ظاهر میشوند، بسط نام فایل بر روی expression آنها (یعنی جایی که expression با یک `~' یا `=' شروع میشود) طوری انجام میگیرد که گویی یک انتساب پارامتر است. در غیر این صورت رفتار خاصی با آرگومان نمیشود؛ به عنوان یک تکآرگومان به دستور ارسال میشود و به عنوان انتساب پارامتر واقعی به کار نمیرود. برای مثال، در echo foo=~/bar:~/rod هر دو رخداد ~ جایگزین خواهند شد. توجه داشته باشید که این اتفاق در هر حالتی با typeset و دستورات مشابه رخ میدهد.
این گزینه به تنظیمات گزینهٔ KSH_TYPESET احترام میگذارد. به عبارت دیگر، اگر هر دو گزینه فعال باشند، آرگومانهایی که شبیه انتساب هستند تحت تفکیک کلمات قرار نخواهند گرفت.
- MARK_DIRS (-8, ksh: -X)
- یک `/' انتهایی به تمام نامهای دایرکتوری حاصل از تولید نام فایل (globbing) الحاق میکند.
- MULTIBYTE <D>
- نویسههای چندبایتی را در صورت یافت شدن در رشتهها به رسمیت میشناسد. هنگامی که این گزینه تنظیم شده باشد، رشتهها با استفاده از کتابخانهٔ سیستم بررسی میشوند تا بسته به لوکال (locale) جاری مشخص شود چند بایت یک نویسه را تشکیل میدهند. این امر بر نحوهٔ شمارش نویسهها در تطبیق الگو، مقادیر پارامترها و جداکنندههای گوناگون اثر میگذارد.
اگر پوسته با MULTIBYTE_SUPPORT کامپایل شده باشد، این گزینه بهطور پیشفرض فعال است؛ در غیر این صورت بهطور پیشفرض غیرفعال است و فعال کردن آن اثری ندارد.
اگر این گزینه غیرفعال باشد، با یک تکبایت همواره به عنوان یک نویسهٔ منفرد رفتار میشود. این تنظیم صرفاً برای بررسی رشتههایی طراحی شده است که مشخص است حاوی بایتهای خام یا مقادیر دیگری هستند که ممکن است در لوکال جاری نویسه نباشند. صرفاً به این دلیل که مجموعه نویسههای لوکال جاری شامل نویسههای چندبایتی نیست، نیازی به غیرفعال کردن این گزینه وجود ندارد. این گزینه بر ویرایشگر پوسته تأثیری نمیگذارد؛ ویرایشگری که همواره از لوکال (locale) برای تعیین نویسههای چندبایتی استفاده میکند. دلیل این امر آن است که مجموعه نویسههای نمایشیافته توسط شبیهساز پایانه، مستقل از تنظیمات پوسته است.
- NOMATCH (+3) <C> <Z>
- اگر الگویی برای تولید نام فایل هیچ تطابقی نداشته باشد، به جای باقی گذاشتن بدون تغییر آن در فهرست آرگومانها، یک خطا چاپ کند. این مورد همچنین بر روی بسط فایل برای `~' یا `=' ابتدایی نیز اعمال میشود.
- NULL_GLOB (-G)
- اگر الگویی برای تولید نام فایل هیچ تطابقی نداشته باشد، به جای گزارش خطا، الگو را از فهرست آرگومانها حذف کند. بر NOMATCH اولویت دارد.
- NUMERIC_GLOB_SORT
- اگر نام فایلهای عددی با یک الگوی تولید نام فایل تطابق پیدا کنند، نام فایلها را به جای ترتیب الفبایی، به صورت عددی مرتب کند.
- RC_EXPAND_PARAM (-P)
- بسطهای آرایهای به فرم `foo${xx}bar'، که در آن پارامتر xx با (a b c) مقداردهی شده است، به جای حالت پیشفرض `fooa b cbar' با `fooabar foobbar foocbar' جایگزین میشوند. توجه داشته باشید که از این رو یک آرایه خالی باعث حذف تمام آرگومانها خواهد شد.
- REMATCH_PCRE
- اگر تنظیم شود، تطبیق عبارات باقاعده با عملگر =~ از عبارات باقاعده سازگار با پرل (PCRE) برگرفته از کتابخانه PCRE استفاده خواهد کرد. (ماژول zsh/pcre باید در دسترس باشد.) اگر تنظیم نشده باشد، عبارات باقاعده از ساختار نحو عبارت باقاعده گسترشیافته ارائهشده توسط کتابخانههای سیستم استفاده خواهند کرد.
- SH_GLOB <K> <S>
- معنای ویژه `('، `|'، `)' و '<' را برای تطبیق الگوی حاصل از بسط پارامتر و جایگزینی دستور، و در برخی مکانهای دیگری که پوسته الگو میپذیرد، غیرفعال میکند. اگر SH_GLOB تنظیم شده باشد اما KSH_GLOB تنظیم نشده باشد، پوسته تفسیر عبارتهای زیرپوسته (subshell) محصور در پرانتز را در مواردی که پیش از پرانتز باز فاصلهای وجود ندارد امکانپذیر میسازد؛ برای نمونه !(true) به گونهای تفسیر میشود که گویی پس از ! یک فاصله وجود داشته است. این گزینه در صورتی که zsh به عنوان sh یا ksh فراخوانی شود، به صورت پیشفرض فعال است.
- UNSET (+u, ksh: +u) <K> <S> <Z>
- با پارامترهای تنظیمنشده هنگام جایگزینی به گونهای رفتار میکند که گویی خالی هستند، و هنگام خواندن مقادیر آنها در بسط حسابی و دستورهای محاسباتی، به گونهای که گویی صفر هستند. در غیر این صورت، با آنها به عنوان خطا برخورد میشود.
- WARN_CREATE_GLOBAL
- هنگامی که یک پارامتر سراسری درون یک تابع توسط یک انتساب یا در بستر محاسباتی ایجاد میشود، پیام هشداری چاپ کند. این مورد اغلب نشاندهنده آن است که پارامتری در حالی که باید به صورت محلی اعلان میشد، محلی اعلان نشده است. پارامترهایی که به صراحت از درون یک تابع با استفاده از typeset -g سراسری اعلان شدهاند، هشداری ایجاد نمیکنند. توجه داشته باشید زمانی که به یک پارامتر محلی در یک تابع تودرتو مقداری انتساب داده میشود هشداری صادر نمیشود، که این مورد نیز ممکن است بیانگر یک خطا باشد.
- WARN_NESTED_VAR
- هنگامی که یک پارامتر موجود از دامنه تابع دربرگیرنده، یا سراسری، درون یک تابع توسط یک انتساب یا در بستر محاسباتی مقداردهی شود، پیام هشداری چاپ کند. انتساب به پارامترهای ویژه پوسته هشداری ایجاد نمیکند. این گزینه مکمل WARN_CREATE_GLOBAL است زیرا در این حالت، هشدار فقط زمانی چاپ میشود که پارامتری ایجاد نشده باشد. در صورت امکان، استفاده از typeset -g برای مقداردهی پارامتر هشدار را فرومینشاند، اما توجه داشته باشید که لازم است این کار هر بار که پارامتر مقداردهی میشود انجام گیرد. برای محدود کردن اثر این گزینه به دامنه یک تابع خاص، از `functions -W' استفاده کنید.
برای نمونه، کد زیر برای انتساب درون تابع nested هشدار تولید میکند، زیرا مقدار درون toplevel را بازنویسی میکند:
toplevel() {
local foo="in fn"
nested
}
nested() {
foo="in nested"
}
setopt warn_nested_var
toplevel
- APPEND_HISTORY <D>
- اگر این گزینه تنظیم شده باشد، نشستهای zsh بهجای جایگزین کردن فایل تاریخچه، فهرست تاریخچهٔ خود را به انتهای آن اضافه (append) میکنند. بنابراین، تمام مدخلهای جدید از فهرست تاریخچهٔ چندین نشست موازی zsh، به ترتیبی که خارج میشوند، به فایل تاریخچه افزوده خواهند شد. این فایل همچنان بهصورت دورهای زمانی که تعداد خطوط آن ۲۰٪ بیشتر از مقدار مشخصشده توسط $SAVEHIST شود، برای هرس شدن بازنویسی میشود (همچنین گزینهٔ HIST_SAVE_BY_COPY را ببینید).
- BANG_HIST (+K) <C> <Z>
- گسترش متنی تاریخچه را به سبک csh و با رفتار ویژه با نویسهٔ `!' انجام میدهد.
- EXTENDED_HISTORY <C>
- برچسب زمانیِ آغاز هر دستور (به ثانیه از مبدأ زمانی epoch) و مدت زمان اجرای آن (به ثانیه) را در فایل تاریخچه ذخیره میکند. قالب این دادههای پیشوندی به این صورت است:
`: <beginning time>:<elapsed seconds>;<command>'.
- HIST_ALLOW_CLOBBER
- افزودن `|' به تغییرمسیرهای خروجی در تاریخچه. این کار اجازه میدهد ارجاعات به تاریخچه حتی زمانی که CLOBBER غیرفعال است، فایلها را رونویسی (clobber) کنند.
- HIST_BEEP <D>
- پخش صدای بوق در ZLE هنگامی که یک ابزارک سعی میکند به مدخلی از تاریخچه که وجود ندارد دسترسی پیدا کند.
- HIST_EXPIRE_DUPS_FIRST
- اگر تاریخچهٔ درونی برای افزودن خط فرمان جاری نیاز به هرس شدن داشته باشد، تنظیم این گزینه باعث میشود که قدیمیترین رویداد تاریخچه که نسخهٔ تکراری دارد، پیش از حذف یک رویداد یکتا از فهرست، از بین برود. باید اطمینان حاصل کنید که مقدار HISTSIZE روی عددی بزرگتر از SAVEHIST تنظیم شده باشد تا فضایی برای رویدادهای تکراری فراهم شود؛ در غیر این صورت، به محض پر شدن تاریخچه از رویدادهای یکتا، این گزینه رفتاری درست مانند HIST_IGNORE_ALL_DUPS خواهد داشت.
- HIST_FCNTL_LOCK
- هنگام نوشتن روی فایل تاریخچه، zsh بهطور پیشفرض از قفلگذاری موقت (ad-hoc) فایل استفاده میکند تا از مشکلات شناختهشدهٔ قفلگذاری روی برخی سیستمعاملها جلوگیری کند. با فعال بودن این گزینه، قفلگذاری در صورت وجود این روش، از طریق فراخوانی سیستمی fcntl انجام میشود. در سیستمعاملهای امروزی این کار ممکن است کارایی بهتری فراهم کند، بهویژه از خراب شدن تاریخچه در هنگام ذخیرهٔ فایلها روی NFS جلوگیری میکند.
- HIST_FIND_NO_DUPS
- هنگام جستوجوی مدخلهای تاریخچه در ویرایشگر خط، موارد تکراریِ خطی که پیشتر پیدا شده است را نمایش نده، حتی اگر موارد تکراری متوالی نباشند.
- HIST_IGNORE_ALL_DUPS
- اگر یک خط فرمان جدید که به فهرست تاریخچه اضافه میشود تکراریِ یک دستور قدیمیتر باشد، دستور قدیمیتر از فهرست حذف میشود (حتی اگر رویداد بلافاصله قبلی نباشد).
- HIST_IGNORE_DUPS (-h)
- اگر خطوط فرمان تکرار رویداد قبلی باشند، آنها را وارد فهرست تاریخچه نکن.
- HIST_IGNORE_SPACE (-g)
- خطوط فرمان را از فهرست تاریخچه حذف کن اگر نخستین نویسهٔ خط یک فاصله باشد، یا اگر یکی از نامهای مستعار گسترشیافته حاوی فاصله در ابتدا باشد. تنها نامهای مستعار معمولی (نه نامهای مستعار سراسری یا پسوندی) این رفتار را دارند. توجه داشته باشید که دستور تا زمان وارد شدن دستور بعدی در تاریخچهٔ درونی باقی میماند و پس از آن ناپدید میشود؛ این به شما امکان میدهد خط را موقتاً مجدداً استفاده یا ویرایش کنید. اگر میخواهید فوراً و بدون وارد کردن دستور دیگری ناپدید شود، یک فاصله تایپ کرده و کلید بازگشت (return) را فشار دهید.
- HIST_LEX_WORDS
- بهطور پیشفرض، تاریخچهٔ شل که از فایلها خوانده میشود، روی تمام فاصلههای سفید (whitespace) به کلمات تجزیه میشود. این بدان معناست که آرگومانهای دارای فاصلههای نقلقولشده بهدرستی پردازش نمیشوند، و در نتیجه، ارجاع به کلمات در خطوط تاریخچهای که از فایل خوانده شدهاند ممکن است نادرست باشد. وقتی این گزینه تنظیم شده باشد، کلمات خواندهشده از فایل تاریخچه به شیوهای مشابه پردازش عادی خط فرمان شل تقسیم میشوند. اگرچه این کار کلماتی با مرزبندی دقیقتر تولید میکند، اما در صورت بزرگ بودن اندازهٔ فایل تاریخچه میتواند کُند باشد. برای تصمیمگیری نیاز به آزمون و خطا است.
- HIST_NO_FUNCTIONS
- تعاریف توابع را از فهرست تاریخچه حذف کن. توجه داشته باشید که تابع تا زمان وارد شدن دستور بعدی در تاریخچهٔ درونی باقی میماند و پس از آن ناپدید میشود؛ این به شما امکان میدهد تعریف آن را موقتاً دوباره استفاده یا ویرایش کنید.
- HIST_NO_STORE
- دستور history (fc -l) را در هنگام فراخوانی از فهرست تاریخچه حذف کن. توجه داشته باشید که دستور تا زمان وارد شدن دستور بعدی در تاریخچهٔ درونی باقی میماند و پس از آن ناپدید میشود؛ این به شما امکان میدهد خط را موقتاً مجدداً استفاده یا ویرایش کنید.
- HIST_REDUCE_BLANKS
- فاصلههای خالی اضافی را از هر خط فرمانی که به فهرست تاریخچه اضافه میشود حذف کن.
- HIST_SAVE_BY_COPY <D>
- هنگامی که فایل تاریخچه بازنویسی میشود، معمولاً رونوشتی از فایل به نام $HISTFILE.new نوشته میشود و سپس با تغییر نام، جایگزین فایل قدیمی میگردد. با این حال، اگر این گزینه غیرفعال باشد، بهجای آن فایل قدیمی تاریخچه بریده (truncate) شده و نسخهٔ جدید در همانجا بازنویسی میشود. اگر یکی از گزینههای الحاق تاریخچه فعال باشد، این گزینه تنها زمانی اثرگذار خواهد بود که فایلِ بزرگشدهٔ تاریخچه نیاز به بازنویسی جهت کاهش اندازه و هرس شدن داشته باشد. این گزینه را تنها در صورت داشتن نیازهای خاص غیرفعال کنید، زیرا در صورت قطع شدن فرایند zsh در حین ذخیرهسازی، امکان از دست رفتن مدخلهای تاریخچه وجود دارد.
هنگام نوشتن یک رونوشت از فایل تاریخچه، zsh دسترسیها و اطلاعات گروهِ فایل قدیمی را حفظ میکند، اما اگر مالک فایل تاریخچه تغییر کند، از نوشتن فایل جدید خودداری خواهد کرد.
- HIST_SAVE_NO_DUPS
- هنگام نوشتن و ذخیرهٔ فایل تاریخچه، دستورات قدیمیتری که تکراریِ دستورات جدیدتر هستند، حذف میشوند.
- HIST_VERIFY
- هرگاه کاربر خطی را همراه با گسترش تاریخچه وارد کند، خط را مستقیماً اجرا نکن؛ در عوض، گسترش تاریخچه را انجام داده و خط را مجدداً درون بافر ویرایش بارگذاری کن.
- INC_APPEND_HISTORY
- این گزینه مانند APPEND_HISTORY عمل میکند با این تفاوت که خطوط جدید تاریخچه بهجای صبر کردن تا زمان خروج پوسته، بهصورت افزایشی (بهمحض وارد شدن) به $HISTFILE اضافه میشوند. این فایل همچنان بهصورت دورهای زمانی که تعداد خطوط آن ۲۰٪ بیشتر از مقدار مشخصشده توسط $SAVEHIST شود، برای هرس شدن بازنویسی خواهد شد (همچنین گزینهٔ HIST_SAVE_BY_COPY را ببینید).
- INC_APPEND_HISTORY_TIME
- این گزینه شاخهای از INC_APPEND_HISTORY است که در آن، در صورت امکان، مدخل تاریخچه پس از پایان اجرای دستور در فایل نوشته میشود تا مدتزمان مصرفشده توسط دستور بهدرستی با قالب EXTENDED_HISTORY در فایل تاریخچه ثبت شود. این بدان معناست که مدخل تاریخچه فوراً برای سایر نمونههای پوستهای که از همان فایل تاریخچه استفاده میکنند در دسترس نخواهد بود.
این گزینه تنها زمانی مفید است که INC_APPEND_HISTORY و SHARE_HISTORY خاموش باشند. این سه گزینه باید ناسازگار با یکدیگر (مانعةالجمع) در نظر گرفته شوند.
این گزینه هم دستورات جدید را از فایل تاریخچه وارد (import) میکند و هم باعث میشود دستورات تایپشدهٔ شما به انتهای فایل تاریخچه الحاق شوند (مورد دوم مشابه مشخص کردن INC_APPEND_HISTORY است که در صورت فعال بودن این گزینه باید غیرفعال شود). خطوط تاریخچه همچنین همانند EXTENDED_HISTORY همراه با برچسبهای زمانی خروجی داده میشوند (که یافتن نقطهای را که خواندن فایل پس از بازنویسی متوقف شده بود، آسانتر میکند).
بهطور پیشفرض، دستورات پیمایش در تاریخچه علاوه بر خطوط محلی، خطوط واردشده را نیز بررسی میکنند، اما میتوانید این حالت را با اتصال کلید zle با عنوان set-local-history فعال و غیرفعال کنید. همچنین امکان ساخت یک ابزارک zle وجود دارد که باعث شود برخی دستورات، دستورات واردشده را نادیده بگیرند و برخی دیگر آنها را در بر گیرند.
اگر احساس میکنید کنترل بیشتری روی زمان وارد شدن دستورات نیاز دارید، ممکن است بخواهید SHARE_HISTORY را غیرفعال کرده و INC_APPEND_HISTORY یا INC_APPEND_HISTORY_TIME (به بالا نگاه کنید) را فعال نمایید و سپس هر زمان که نیاز داشتید با استفاده از `fc -RI' دستورات را بهصورت دستی وارد کنید.
- ALL_EXPORT (-a, ksh: -a)
- تمام پارامترهایی که پس از این تعریف شوند، بهطور خودکار صادر (export) میشوند.
- GLOBAL_EXPORT <Z>
- اگر این گزینه فعال باشد، دادن پرچم -x به دستورهای توکار declare، float، integer، readonly و typeset (بهجز local) پرچم -g را نیز تنظیم میکند؛ بنابراین پارامترهای صادرشده به محیط، برای تابع دربرگیرنده بهصورت محلی درنخواهند آمد، مگر اینکه از قبل محلی بوده باشند یا پرچم +g بهطور صریح داده شده باشد. اگر این گزینه غیرفعال باشد، پارامترهای صادرشده درست مانند هر پارامتر دیگری محلی خواهند شد.
این گزینه بهطور پیشفرض برای سازگاری با نسخههای قبلی فعال است؛ توصیه نمیشود که به رفتار آن اتکا کنید. توجه داشته باشید که دستور توکار export همیشه هر دو پرچم -x و -g را تنظیم میکند و بنابراین اثر آن به فراتر از دامنهٔ تابع دربرگیرنده گسترش مییابد؛ این قابلحملترین روش برای دستیابی به این رفتار است.
- GLOBAL_RCS (+d) <D>
- اگر این گزینه غیرفعال باشد، فایلهای راهاندازی /etc/zsh/zprofile، /etc/zsh/zshrc، /etc/zsh/zlogin و /etc/zsh/zlogout اجرا نخواهند شد. این گزینه را میتوان در هر زمان، از جمله در داخل فایلهای راهاندازی محلی (.zshrc و غیره)، غیرفعال و دوباره فعال کرد.
- RCS (+f) <D>
- پس از بارگذاری /etc/zsh/zshenv در هنگام راهاندازی، فایلهای .zshenv، /etc/zsh/zprofile، .zprofile، /etc/zsh/zshrc، .zshrc، /etc/zsh/zlogin، .zlogin و .zlogout را همانطور که در بخش «Files» توضیح داده شده است، بارگذاری کن. اگر این گزینه غیرفعال باشد، فایل /etc/zsh/zshenv همچنان بارگذاری میشود، اما هیچیک از فایلهای دیگر بارگذاری نخواهند شد؛ میتوان آن را در هر زمان تنظیم کرد تا از بارگذاری فایلهای راهاندازی باقیمانده پس از فایلی که هماکنون در حال اجراست جلوگیری شود.
ورودی/خروجی (Input/Output)
- ALIASES <D>
- بسط دادن نامهای مستعار (aliases).
- CLOBBER (+C, ksh: +C) <D>
- به تغییر مسیر `>' اجازه میدهد تا فایلهای موجود را بازنویسی و کوتاه (truncate) کند. در غیر این صورت، برای کوتاه کردن یک فایل باید از `>!' یا `>|' استفاده شود.
اگر این گزینه تنظیم نشده باشد، و گزینهٔ APPEND_CREATE نیز تنظیم نشده باشد، باید برای ایجاد یک فایل از `>>!' یا `>>|' استفاده شود. اگر هر یک از این گزینهها فعال باشد، میتوان از `>>' استفاده کرد.
- CLOBBER_EMPTY
- این گزینه تنها در صورتی استفاده میشود که گزینهٔ CLOBBER فعال نباشد: توجه داشته باشید که این گزینه بهطور پیشفرض فعال است.
اگر این گزینه فعال باشد، فایلهای عادی با طول صفر ممکن است بازنویسی شوند (`clobbered'). توجه داشته باشید این امکان وجود دارد که پردازش دیگری بین این بررسی و استفاده از فایل توسط پردازش فعلی، در فایل نوشته باشد. بنابراین این گزینه نباید در مواردی استفاده شود که ممکن است در فایلهای مورد بازنویسی بهصورت ناهمگام نوشته شود.
- CORRECT (-0)
- تلاش برای تصحیح املای دستورها. توجه داشته باشید که وقتی گزینهٔ HASH_LIST_ALL تنظیم نشده باشد یا وقتی برخی از دایرکتوریهای موجود در مسیر قابل خواندن نباشند، ممکن است در اولین باری که برخی دستورها استفاده میشوند، خطاهای املایی بهاشتباه گزارش شوند.
متغیر پوستهٔ CORRECT_IGNORE میتواند روی الگویی تنظیم شود تا کلماتی را که هرگز نباید بهعنوان تصحیح پیشنهاد شوند، مطابقت دهد.
- CORRECT_ALL (-O)
- تلاش برای تصحیح املای تمام آرگومانها در یک خط.
متغیر پوستهٔ CORRECT_IGNORE_FILE میتواند روی الگویی تنظیم شود تا نام فایلهایی را که هرگز نباید بهعنوان تصحیح پیشنهاد شوند، مطابقت دهد.
- DVORAK
- استفاده از صفحهکلید Dvorak بهجای صفحهکلید استاندارد qwerty بهعنوان مبنایی برای بررسی خطاهای املایی در گزینههای CORRECT و CORRECT_ALL و دستور ویرایشگر spell-word.
- FLOW_CONTROL <D>
- اگر این گزینه غیرفعال باشد، کنترل جریان خروجی از طریق نویسههای start/stop (که معمولاً به ^S/^Q اختصاص داده میشوند) در ویرایشگر پوسته غیرفعال میشود.
- IGNORE_EOF (-7)
- با رسیدن به پایان فایل (end-of-file) خارج نشو. در عوض، استفاده از exit یا logout را الزامی کن. با این حال، ده EOF متوالی در هر صورت باعث خروج پوسته خواهد شد تا در صورت از دست رفتن tty، از معلق ماندن پوسته جلوگیری شود.
همچنین، اگر این گزینه فعال باشد و از Zsh Line Editor استفاده شود، ابزارکهای (widgets) پیادهسازیشده با توابع پوسته را میتوان بدون چاپ پیام هشدار همیشگی به EOF (معمولاً Control-D) متصل (bind) کرد. این ویژگی تنها برای ابزارکهای عادی کار میکند، نه ابزارکهای تکمیل (completion).
- INTERACTIVE_COMMENTS (-k) <K> <S>
- مجاز دانستن توضیحات (comments) حتی در پوستههای تعاملی.
- HASH_CMDS <D>
- مکان هر دستور را در اولین باری که اجرا میشود ثبت کن. فراخوانیهای بعدی همان دستور از مکان ذخیرهشده استفاده خواهند کرد که از جستجوی مسیر جلوگیری میکند. اگر این گزینه غیرفعال باشد، هیچ هشگذاری مسیری انجام نمیشود. با این حال، زمانی که CORRECT فعال است، دستورهایی که نام آنها در جدولهای هش توابع یا نامهای مستعار ظاهر نمیشود هش میشوند تا از گزارش آنها بهعنوان خطای املایی جلوگیری شود.
- HASH_DIRS <D>
- هر زمان که نام دستوری هش شود، دایرکتوری حاوی آن و همچنین تمام دایرکتوریهایی را که در مسیر قبل از آن قرار دارند هش کن. اگر نه HASH_CMDS و نه CORRECT فعال نباشند، هیچ اثری ندارد.
- HASH_EXECUTABLES_ONLY
- هنگام هش کردن دستورها بهدلیل HASH_CMDS، بررسی کن که آیا فایل مورد نظر برای هش واقعاً یک فایل اجرایی است یا خیر. این گزینه بهطور پیشفرض غیرفعال است زیرا اگر مسیر شامل تعداد زیادی دستور باشد، یا از فایلهای ریموت متعددی تشکیل شده باشد، این بررسیهای اضافی میتواند زمان زیادی ببرد. برای مشخص شدن مفید بودن این گزینه به آزمون و خطا نیاز است.
- MAIL_WARNING (-U)
- اگر از زمان آخرین بررسی پوسته به یک فایل ایمیل (mail) دسترسی پیدا شده باشد، یک پیام هشدار چاپ کن.
- PATH_DIRS (-Q)
- جستجوی مسیر را حتی برای نامهای دستوری که حاوی اسلش هستند انجام بده. بنابراین اگر `/usr/local/bin' در مسیر کاربر باشد و او عبارت `X11/xinit' را تایپ کند، دستور `/usr/local/bin/X11/xinit' اجرا خواهد شد (به فرض اینکه وجود داشته باشد). دستورهایی که بهصراحت با `/'، `./' یا `../' شروع میشوند، مشمول جستجوی مسیر قرار نمیگیرند. این قاعده برای دستورهای توکار `.' و source نیز صدق میکند.
توجه داشته باشید که زیردایرکتوریهای دایرکتوری فعلی همیشه برای یافتن فایلهای اجراییِ مشخصشده به این شکل جستجو میشوند. این کار پیش از هرگونه جستجوی مشخصشده توسط این گزینه انجام میگیرد، و مستقل از این است که `.' یا دایرکتوری فعلی در مسیر جستجوی دستور ظاهر شده باشد یا خیر.
- PATH_SCRIPT <K> <S>
- اگر این گزینه فعال نباشد، اسکریپتی که بهعنوان اولین آرگومان غیرگزینهای به پوسته داده میشود باید شامل نام فایلی باشد که باید باز شود. اگر این گزینه فعال باشد و اسکریپت مسیر دایرکتوری را مشخص نکند، اسکریپت ابتدا در دایرکتوری فعلی، و سپس در مسیر دستورها جستجو میشود. بخش INVOCATION در zsh(1) را ببینید.
- PRINT_EIGHT_BIT
- چاپ نویسههای هشتبیتی بهصورت تحتاللفظی در فهرستهای تکمیل و غیره. اگر سیستم شما قابلیت چاپ نویسههای هشتبیتی را بهدرستی برمیگرداند، این گزینه لازم نیست (نگاه کنید به ctype(3)).
- PRINT_EXIT_VALUE (-1)
- چاپ مقدار وضعیت خروج برنامههایی که وضعیت خروج غیرصفر دارند. این ویژگی تنها در خط فرمان در پوستههای تعاملی در دسترس است.
- RC_QUOTES
- اجازه دادن به دنبالهٔ نویسهای `''' برای نشان دادن یک نقلقول تکی (single quote) در داخل رشتههای محصور در نقلقول تکی. توجه داشته باشید که این قاعده برای رشتههای نقلقولشده با قالب $'...' اعمال نمیشود، جایی که میتوان از یک نقلقول تکی همراه با بکاسلش استفاده کرد.
- RM_STAR_SILENT (-H) <K> <S>
- پیش از اجرای `rm *' یا `rm path/*' از کاربر تأییدیه نگیر..TP RM_STAR_WAIT اگر پیش از اجرای `rm *' یا `rm path/*' از کاربر سؤال پرسیده شود، ابتدا ده ثانیه درنگ میکند و هر آنچه در این مدت تایپ شود نادیده گرفته میشود. این کار از پاسخ غیرارادی «yes» به پرسش، زمانی که کاربر واقعاً چنین قصدی نداشته است، جلوگیری میکند. با بسط دادن `*' در ZLE (با کلید tab)، همواره میتوان از این درنگ و پرسش جلوگیری کرد.
- SHORT_LOOPS <C> <Z>
- اجازه استفاده از اشکال کوتاه ساختارهای for، repeat، select، if و function را میدهد.
- SHORT_REPEAT
- شکل کوتاه repeat را همانند SHORT_LOOPS مجاز میداند، اما بدون اینکه آن را برای سایر ساختارها فعال کند.
- SUN_KEYBOARD_HACK (-L)
- اگر خطی با یک بکتیک (backquote) خاتمه یابد و تعداد بکتیکهای موجود در خط فرد باشد، بکتیک پایانی را نادیده میگیرد. این گزینه در برخی صفحهکلیدها که کلید return بیش از حد کوچک است و کلید بکتیک به شکلی آزاردهنده نزدیک آن قرار دارد مفید است. بهعنوان یک جایگزین، متغیر KEYBOARD_HACK به شما امکان میدهد نویسهای را که باید حذف شود تعیین کنید.
کنترل کارها (Job Control)
- AUTO_CONTINUE
- با تنظیم این گزینه، به کارهای متوقفشدهای که با دستور توکار disown از جدول کارها حذف میشوند، به طور خودکار سیگنال CONT ارسال میشود تا به حالت اجرا درآیند.
- AUTO_RESUME (-W)
- دستورهای ساده تککلمهایِ بدون تغییرمسیر را بهعنوان نامزدی برای از سرگیری یک کار موجود در نظر میگیرد.
- BG_NICE (-6) <C> <Z>
- تمام کارهای پسزمینه را با اولویت پایینتری اجرا میکند. این گزینه بهطور پیشفرض فعال است.
- CHECK_JOBS <Z>
- پیش از خروج از یک شل دارای کنترل کار، وضعیت کارهای پسزمینه و معلقشده را گزارش میدهد؛ تلاش دوم برای خروج از شل موفقیتآمیز خواهد بود. بهتر است NO_CHECK_JOBS تنها همراه با NO_HUP استفاده شود، در غیر این صورت چنین کارهایی بهطور خودکار کشته خواهند شد.
اگر دستورهای اجراشده در خط فرمان قبلی شامل دستور `jobs' بوده باشد، این بررسی انجام نمیشود؛ چرا که فرض بر این است که کاربر از وجود کارهای پسزمینه یا معلق آگاه است. اجرای دستور `jobs' از طریق یکی از توابع قلاب تعریفشده در بخش SPECIAL FUNCTIONS در zshmisc(1) برای این منظور به شمار نمیآید.
- CHECK_RUNNING_JOBS <Z>
- هنگامی که CHECK_JOBS فعال است، هم کارهای در حال اجرا و هم کارهای معلق را بررسی میکند. هنگامی که این گزینه غیرفعال باشد، zsh تنها کارهای معلق را بررسی میکند که این رفتار با رفتار پیشفرض bash مطابقت دارد.
این گزینه هیچ تأثیری ندارد مگر اینکه CHECK_JOBS تنظیم شده باشد.
- HUP <Z>
- هنگام خروج شل، سیگنال HUP را به کارهای در حال اجرا ارسال میکند.
- LONG_LIST_JOBS (-R)
- اعلانهای کارها را بهطور پیشفرض در قالب طولانی چاپ میکند.
- MONITOR (-m, ksh: -m)
- کنترل کارها را مجاز میسازد. بهطور پیشفرض در شلهای تعاملی فعال است.
- NOTIFY (-5, ksh: -b) <Z>
- وضعیت کارهای پسزمینه را فوراً گزارش میدهد، به جای اینکه تا درست پیش از نمایش اعلان اعلان شل منتظر بماند.
- POSIX_JOBS <K> <S>
- این گزینه کنترل کار را با استاندارد POSIX سازگارتر میسازد.
هنگامی که این گزینه تنظیم نشده باشد، گزینه MONITOR هنگام ورود به زیرشلها غیرفعال میشود تا کنترل کار دیگر فعال نباشد. هنگامی که گزینه تنظیم شده باشد، گزینه MONITOR و کنترل کار درون زیرشل فعال باقی میمانند، اما توجه داشته باشید که زیرشل هیچ دسترسی به کارهای موجود در شل والد ندارد.
هنگامی که این گزینه تنظیم نشده باشد، کارهایی که با bg یا fg به پسزمینه یا پیشزمینه منتقل میشوند با همان اطلاعاتی نمایش داده میشوند که توسط jobs گزارش میشد. هنگامی که گزینه تنظیم شده باشد، تنها متن چاپ میشود. خروجی خودِ jobs تحت تأثیر این گزینه قرار نمیگیرد.
هنگامی که این گزینه تنظیم نشده باشد، اطلاعات کارها از شل والد برای نمایش خروجی درون یک زیرشل (به عنوان مثال درون یک خطلوله) ذخیره میشود. هنگامی که گزینه تنظیم شده باشد، خروجی jobs خالی خواهد بود تا زمانی که کاری درون زیرشل آغاز شود.
در نسخههای پیشین این شل، فعال کردن POSIX_JOBS برای این که دستور توکار wait وضعیت کارهای پسزمینهای را که قبلاً خارج شده بودند بازگرداند ضروری بود. اکنون دیگر چنین نیست.
- PROMPT_BANG <K>
- در صورت تنظیم، با «!» در بسط اعلان به گونهای خاص رفتار میشود. بخش EXPANSION OF PROMPT SEQUENCES را در zshmisc(1) ببینید.
- PROMPT_CR (+V) <D>
- درست پیش از چاپ یک اعلان در ویرایشگر خط، یک بازگشت به ابتدای سطر (carriage return) چاپ میکند. این گزینه بهطور پیشفرض فعال است چرا که ویرایش چندخطی تنها زمانی امکانپذیر است که ویرایشگر بداند ابتدای خط کجاست.
- PROMPT_SP <D>
- تلاش میکند تا یک خط ناقص (یعنی خطی که به یک خط جدید ختم نشده است) را که در غیر این صورت به دلیل گزینهٔ PROMPT_CR توسط اعلان خط فرمان پوشانده میشد، حفظ کند. این کار با خروجی دادن چند نویسهٔ کنترل مکاننما، از جمله مجموعهای از فاصلهها، انجام میشود تا در صورت وجود یک خط ناقص، ترمینال به خط بعدی برود (توجه داشته باشید که این کار تنها در صورتی موفقیتآمیز است که ترمینال شما دارای حاشیههای خودکار (automatic margins) باشد، که معمولاً چنین است).
هنگامی که یک خط ناقص حفظ میشود، بهطور پیشفرض نویسهای معکوس+پررنگ (inverse+bold) را در انتهای خط ناقص مشاهده خواهید کرد: یک «%» برای کاربر عادی یا یک «#» برای کاربر ریشه (root). در صورت تنظیم، میتوان از پارامتر شل PROMPT_EOL_MARK برای سفارشیسازی نحوهٔ نمایش انتهای خطوط ناقص استفاده کرد.
نکته: اگر گزینهٔ PROMPT_CR تنظیم نشده باشد، فعال کردن این گزینه هیچ اثری نخواهد داشت. این گزینه بهطور پیشفرض فعال است.
- PROMPT_PERCENT <C> <Z>
- در صورت تنظیم، با «%» در بسط اعلان به گونهای خاص رفتار میشود. بخش EXPANSION OF PROMPT SEQUENCES را در zshmisc(1) ببینید.
- PROMPT_SUBST <K> <S>
- در صورت تنظیم، بسط پارامتر، جایگزینی دستور و بسط محاسباتی در اعلانها انجام میشوند. جایگزینیهای درون اعلانها بر وضعیت دستور تاثیری نمیگذارند.
- TRANSIENT_RPROMPT
- هنگام پذیرش یک خط فرمان، هرگونه اعلان سمت راست را از صفحه نمایش حذف میکند. این ممکن است در ترمینالهایی با روشهای دیگر برش/چسباندن (cut/paste) مفید باشد.
اسکریپتها و توابع (Scripts and Functions)
- ALIAS_FUNC_DEF <S>
- بهطور پیشفرض، zsh اجازهٔ تعریف توابع با استفاده از نحو «name ()» را در صورتی که name به عنوان یک نام مستعار (alias) بسط داده شده باشد، نمیدهد: این کار موجب بروز خطا میشود. این معمولاً رفتار مطلوب است، زیرا در غیر این صورت ترکیب یک نام مستعار و یک تابع بر اساس همان تعریف میتواند به راحتی مشکلساز شود.
هنگامی که این گزینه تنظیم شود، میتوان از نامهای مستعار برای تعریف توابع استفاده کرد.
برای نمونه، تعاریف زیر را آنگونه که ممکن است در یک فایل راهاندازی رخ دهند در نظر بگیرید.
alias foo=bar
foo() {
print This probably does not do what you expect.
}
در اینجا، foo پیش از مواجهه با () به عنوان یک نام مستعار به bar بسط داده میشود، بنابراین تابع تعریفشده bar نام خواهد داشت. بهطور پیشفرض، این کار در حالت بومی یک خطا محسوب میشود. توجه داشته باشید که قرار دادن هر بخش از نام تابع در نقلقول، یا استفاده از کلیدواژهٔ function، از این مشکل جلوگیری میکند، بنابراین زمانی که نام تابع میتواند یک نام مستعار نیز باشد، استفاده از آن توصیه میشود.
- C_BASES
- اعداد هگزادسیمال را در قالب استاندارد C خروجی میدهد، برای نمونه «0xFF» به جای حالت معمول «16#FF». اگر گزینهٔ OCTAL_ZEROES نیز تنظیم شده باشد (که بهطور پیشفرض نیست)، با اعداد هشتهشتی (اکتال) نیز به همین صورت برخورد میشود و از این رو به جای «8#77» به صورت «077» ظاهر میشوند. این گزینه بر انتخاب مبنای خروجی و همچنین بر خروجی مبناهایی غیر از هگزادسیمال و اکتال هیچ اثری ندارد. توجه داشته باشید که این قالبها در ورودی، صرفنظر از تنظیم C_BASES، درک خواهند شد.
- C_PRECEDENCES
- اولویت عملگرهای محاسباتی را تغییر میدهد تا بیشتر شبیه به زبان C و سایر زبانهای برنامهنویسی باشد؛ بخش ARITHMETIC EVALUATION در zshmisc(1) فهرستی صریح از آنها را در بر دارد.
- DEBUG_BEFORE_CMD <D>
- تلهٔ DEBUG را پیش از هر دستور اجرا میکند؛ در غیر این صورت پس از هر دستور اجرا میشود. تنظیم این گزینه رفتار ksh 93 را شبیهسازی میکند؛ با غیرفعال بودن این گزینه رفتار شبیه به ksh 88 خواهد بود.
- ERR_EXIT (-e, ksh: -e)
- اگر دستوری وضعیت خروج غیرصفر داشته باشد، در صورت تنظیم، تلهٔ ZERR را اجرا کرده و خارج میشود. این قابلیت در حین اجرای اسکریپتهای مقداردهی اولیه غیرفعال است.
این رفتار در داخل تلههای DEBUG نیز غیرفعال است. در این حالت با این گزینه به طور ویژه رفتار میشود: هنگام ورود به تله غیرفعال میشود. اگر گزینهٔ DEBUG_BEFORE_CMD تنظیم شده باشد (که به طور پیشفرض چنین است) و مشخص شود که گزینهٔ ERR_EXIT هنگام خروج تنظیم شده است، آنگاه از دستوری که تلهٔ DEBUG برای آن اجرا میشود صرفنظر میگردد. این گزینه پس از خروج از تله به حالت اولیه بازگردانده میشود.
وضعیت غیرصفر در یک فهرست دستور شامل && یا || برای دستوراتی که در انتهای فهرست نیستند نادیده گرفته میشود. از این رو
false && true
موجب خروج نمیشود.
خروج به دلیل ERR_EXIT اثرات متقابل خاصی با کارهای ناهمگام (asynchronous jobs) دارد که در بخش JOBS در zshmisc(1) قید شده است.
- ERR_RETURN
- اگر دستوری وضعیت خروج غیرصفر داشته باشد، بیدرنگ از تابع دربرگیرنده بازمیگردد. منطق آن مشابه ERR_EXIT است، با این تفاوت که به جای exit، یک عبارت return ضمنی اجرا میشود. این در بیرونیترین سطح یک اسکریپت غیرتعاملی، موجب خروج خواهد شد.
بهطور معمول این گزینه رفتار ERR_EXIT را به ارث میبرد که در آن کدی که در ادامهٔ آن «&&» یا «||» بیاید، بازگشتی ایجاد نمیکند. بنابراین در عبارت زیر:
summit || true
هیچ بازگشتی تحمیل نمیشود چرا که اثر ترکیبی همواره دارای وضعیت بازگشت صفر است.
با این حال، توجه داشته باشید که اگر summit در مثال بالا خود یک تابع باشد، کد درون آن به طور جداگانه در نظر گرفته میشود: ممکن است باعث بازگشت از summit شود (با فرض اینکه گزینه درون summit فعال بماند)، اما نه از زمینهٔ دربرگیرنده. این رفتار با ERR_EXIT که تحت تأثیر حوزهٔ توابع قرار نمیگیرد، تفاوت دارد.
- EVAL_LINENO <Z>
- در صورت تنظیم، شماره خطوط عبارتهای ارزیابیشده با دستور توکار eval جدا از محیط دربرگیرنده پیگیری میشوند. این هم برای پارامتر LINENO و هم برای شماره خط خروجی توسط نویسهٔ گریز اعلان %i صدق میکند. اگر این گزینه تنظیم شده باشد، نویسهٔ گریز اعلان %N به عنوان نشانگر، رشتهٔ «(eval)» را به جای نام اسکریپت یا تابع خروجی میدهد. (این دو نویسهٔ گریز اعلان معمولاً در پارامتر PS4 برای نمایش در خروجی هنگام فعال بودن گزینهٔ XTRACE استفاده میشوند.) اگر EVAL_LINENO غیرفعال باشد، شماره خط اسکریپت یا تابع پیرامون در حین ارزیابی حفظ میشود.
- EXEC (+n, ksh: +n) <D>
- دستورات را اجرا کن. بدون این گزینه، دستورات خوانده شده و از نظر خطاهای نحوی بررسی میشوند، اما اجرا نمیشوند. این گزینه را نمیتوان در یک شل تعاملی خاموش کرد، مگر اینکه «-n» هنگام راهاندازی به شل داده شده باشد.
- FUNCTION_ARGZERO <C> <Z>
- هنگام اجرای یک تابع شل یا سورس کردن یک اسکریپت، $0 را موقتاً روی نام تابع/اسکریپت تنظیم میکند. توجه داشته باشید که تغییر وضعیت FUNCTION_ARGZERO از روشن به خاموش (یا از خاموش به روشن) مقدار فعلی $0 را تغییر نمیدهد. تنها وضعیت موجود در زمان ورود به تابع یا اسکریپت تأثیرگذار است. مقایسه کنید با POSIX_ARGZERO..TP LOCAL_LOOPS وقتی این گزینه تنظیم نشده باشد، اثر دستورهای break و continue ممکن است به خارج از حوزهٔ تابع سرایت کند و بر حلقهها در توابع فراخواننده تأثیر بگذارد. هنگامی که این گزینه در یک تابع فراخواننده تنظیم شده باشد، دستور break یا continue که درون تابع فراخواندهشده مهار نشده باشد (صرفنظر از تنظیمات این گزینه در آن تابع)، هشداری تولید میکند و اثر آن لغو میشود.
- LOCAL_OPTIONS <K>
- اگر این گزینه در زمان بازگشت از یک تابع پوسته تنظیم شده باشد، بیشتر گزینهها (از جمله خود این گزینه) که هنگام ورود به تابع فعال بودند، بازیابی میشوند؛ گزینههایی که بازیابی نمیشوند PRIVILEGED و RESTRICTED هستند. در غیر این صورت، تنها این گزینه و گزینههای LOCAL_LOOPS، XTRACE و PRINT_EXIT_VALUE بازیابی میشوند. بنابراین اگر این گزینه بهطور صریح توسط یک تابع پوسته غیرفعال شود، سایر گزینههای فعال در هنگام بازگشت به همان صورت باقی خواهند ماند. یک تابع پوسته همچنین میتواند با ساختاری مانند `emulate -L zsh'، یک پیکربندی مشخص از پوسته را برای خود تضمین کند؛ گزینهٔ -L گزینهٔ LOCAL_OPTIONS را فعال میکند.
- LOCAL_PATTERNS
- اگر این گزینه در زمان بازگشت از یک تابع پوسته تنظیم شده باشد، وضعیت الگوهای غیرفعالشده، همانطور که با دستور داخلی `disable -p' تنظیم شده بود، به وضعیتی که هنگام ورود به تابع وجود داشت بازگردانده میشود. رفتار این گزینه مشابه اثر LOCAL_OPTIONS بر روی گزینهها است؛ بنابراین `emulate -L sh' (یا در واقع هر شبیهسازی دیگری همراه با گزینهٔ -L) گزینهٔ LOCAL_PATTERNS را فعال میکند.
- LOCAL_TRAPS <K>
- اگر این گزینه هنگام تنظیم تلهٔ سیگنال (signal trap) درون یک تابع تنظیم شده باشد، وضعیت پیشین تله برای آن سیگنال هنگام خروج از تابع بازیابی خواهد شد. توجه داشته باشید که این گزینه باید پیش از تغییر رفتار تله در یک تابع تنظیم شود؛ برخلاف LOCAL_OPTIONS، مقدار آن هنگام خروج از تابع اهمیتی ندارد. با این حال، نیازی نیست که پیش از هر تلهٔ سراسری تنظیم شود تا آن تله به درستی توسط یک تابع بازیابی گردد. برای مثال،
unsetopt localtraps
trap - INT
fn() { setopt localtraps; trap '' INT; sleep 3; }
پس از خروج از تابع، مدیریت عادی SIGINT را بازیابی خواهد کرد.
- MULTI_FUNC_DEF <Z>
- امکان تعریف همزمان چند تابع را در قالب `fn1 fn2...()' فراهم میکند؛ اگر این گزینه تنظیم نشده باشد، این عمل موجب خطای تجزیه (parse error) میشود. تعریف چند تابع با کلمهٔ کلیدی function همواره مجاز است. تعاریف چندگانهٔ توابع چندان رایج نیستند و میتوانند باعث خطاهای مبهم شوند.
- MULTIOS <Z>
- هنگامی که چندین تغییر مسیر (redirection) اعمال میشود، دستورهای tee یا cat ضمنی را اجرا میکند (به بخش `Redirection' مراجعه کنید).
- OCTAL_ZEROES <S>
- مطابق با استاندارد IEEE Std 1003.2-1992 (ISO 9945-2:1993)، هر ثابت عدد صحیحی که با 0 شروع میشود را به عنوان مبنای هشت (octal) تفسیر میکند. این گزینه بهطور پیشفرض فعال نیست، چرا که برای مثال در تجزیهٔ رشتههای تاریخ و زمان دارای صفرهای آغازین، مشکلاتی ایجاد میکند.
دنبالهای از ارقام که نشاندهندهٔ مبنای عددی هستند، مانند مؤلفهٔ `08' در `08#77'، صرفنظر از صفرهای آغازین همواره به صورت دهدهی تفسیر میشوند.
- PIPE_FAIL
- بهطور پیشفرض، هنگامی که یک خط لوله خاتمه مییابد، وضعیت خروجی ثبتشده توسط پوسته و بازگرداندهشده توسط متغیر پوستهٔ $? بازتابدهندهٔ وضعیت راستترین مؤلفهٔ خط لوله است. در صورت تنظیم این گزینه، وضعیت خروج در عوض نمایانگر وضعیت راستترین مؤلفهٔ خط لوله است که غیرصفر بوده، یا اگر تمام مؤلفهها با وضعیت صفر خارج شوند، صفر خواهد بود.
- SOURCE_TRACE
- در صورت تنظیم بودن، zsh با چاپ پیامی اطلاعاتی، نام هر فایلی را که بارگذاری میکند اعلام مینماید. قالب خروجی مشابه گزینهٔ XTRACE همراه با پیام <sourcetrace> است. یک فایل ممکن است توسط خود پوسته هنگام شروع به کار و خاموش شدن آن (Startup/Shutdown Files) یا با استفاده از دستورهای داخلی `source' و `dot' بارگذاری شود.
- TYPESET_SILENT
- اگر این گزینه غیرفعال باشد، اجرای هر یک از دستورهای خانوادهٔ `typeset' بدون هیچ گزینهای و همراه با فهرستی از پارامترهایی که مقداری برای تخصیص ندارند اما از قبل وجود دارند، مقدار پارامتر را نمایش میدهد. اگر این گزینه تنظیم شده باشد، آنها تنها زمانی نشان داده میشوند که پارامترها با گزینهٔ `-m' انتخاب شده باشند. گزینهٔ `-p' صرفنظر از تنظیم بودن یا نبودن این گزینه، در دسترس است.
- TYPESET_TO_UNSET <K> <S>
- هنگام اعلان یک پارامتر جدید با هر یک از دستورهای مرتبط با خانوادهٔ `typeset'، پارامتر تنظیمنشده (unset) باقی میماند مگر اینکه و تا زمانی که مقداری بهطور صریح به آن اختصاص داده شود، چه در خود دستور `typeset' و چه در عبارتهای انتساب بعدی.
- VERBOSE (-v, ksh: -v)
- خطوط ورودی پوسته را به محض خوانده شدن چاپ میکند.
- XTRACE (-x, ksh: -x)
- دستورها و آرگومانهای آنها را هنگام اجرا چاپ میکند. در ابتدای خروجی، مقدار $PS4 قرار میگیرد که طبق توضیحات بخش EXPANSION OF PROMPT SEQUENCES در zshmisc(1) قالببندی شده است.
- APPEND_CREATE <K> <S>
- این گزینه تنها زمانی اعمال میشود که NO_CLOBBER (-C) فعال باشد.
اگر این گزینه تنظیم نشده باشد، پوسته هنگام استفاده از تغییر مسیر الحاقی (>>) روی فایلی که از پیش وجود ندارد، خطا گزارش میکند (رفتار سنتی zsh برای NO_CLOBBER). اگر گزینه تنظیم شده باشد، هیچ خطایی گزارش نمیشود (رفتار POSIX).
- BASH_REMATCH
- هنگامی که فعال باشد، تطابقهای انجامشده با عملگر =~ به جای متغیرهای پیشفرض MATCH و match، متغیر آرایهای BASH_REMATCH را مقداردهی میکنند. نخستین عنصر آرایهٔ BASH_REMATCH شامل کل متن منطبقشده خواهد بود و عنصرهای بعدی شامل زیررشتههای استخراجشده خواهند بود. این گزینه زمانی مفهوم بیشتری پیدا میکند که KSH_ARRAYS نیز تنظیم شده باشد، بهطوری که کل بخش منطبقشده در نمایهٔ 0 ذخیره شود و نخستین زیررشته در نمایهٔ 1 قرار گیرد. بدون این گزینه، متغیر MATCH شامل کل متن منطبقشده و متغیر آرایهای match شامل زیررشتهها خواهد بود.
- BSD_ECHO <S>
- فرمان توکار echo را با فرمان echo(1) در BSD سازگار میکند. این کار دنبالههای گریز با ممیز وارونه (backslash) را در رشتههای echo غیرفعال میکند مگر اینکه گزینهٔ -e مشخص شده باشد.
- CONTINUE_ON_ERROR
- اگر یک خطای مهلک رخ دهد (بخش ERRORS در zshmisc(1) را ببینید)، و کد در یک اسکریپت در حال اجرا باشد، پوسته اجرای خود را از دستور بعدی در بالاترین سطح اسکریپت از سر میگیرد؛ به عبارت دیگر بیرون از تمام توابع یا ساختارهای پوسته مانند حلقهها و شرطها. این ویژگی رفتار پوستههای تعاملی را شبیهسازی میکند، جایی که پوسته برای خواندن فرمانی جدید به ویرایشگر خط بازمیگردد؛ این رفتار عادی نسخههای zsh پیش از 5.0.1 بود.
- CSH_JUNKIE_HISTORY <C>
- یک ارجاع تاریخچه بدون مشخصکنندهٔ رویداد، همیشه به فرمان پیشین اشاره خواهد کرد. بدون این گزینه، چنین ارجاعی در تاریخچه به همان رویدادی اشاره میکند که ارجاع پیشین تاریخچه در خط فرمان جاری اشاره کرده است، و بهطور پیشفرض به فرمان قبلی برمیگردد.
- CSH_JUNKIE_LOOPS <C>
- اجازه میدهد بدنهٔ حلقهها به جای `do list; done' به شکل `list; end' باشد.
- CSH_JUNKIE_QUOTES <C>
- قواعد مربوط به متنهای نقلقولشدهٔ تکی و دوتایی (single- و double-quoted) را تغییر میدهد تا با csh مطابقت داشته باشد. این قواعد ایجاب میکنند که خطوط جدید درجشده با یک ممیز وارونه (backslash) همراه باشند؛ خطوط جدید بدون گریز باعث ایجاد پیام خطا میشوند. در رشتههای نقلقول دوگانه، فرار دادن (escape) `$'، ``' یا `"' غیرممکن میشود (و خود `\' دیگر نیازی به گریز ندارد). جایگزینیهای فرمان فقط یک بار بسط داده میشوند و نمیتوانند تودرتو باشند.
- CSH_NULLCMD <C>
- هنگام اجرای تغییر مسیرهای بدون فرمان، از مقادیر NULLCMD و READNULLCMD استفاده نمیکند. این کار باعث شکست خوردن چنین تغییر مسیرهایی میشود (بخش `Redirection' را ببینید).
- KSH_ARRAYS <K> <S>
- مدیریت آرایه در ksh را تا حد امکان دقیق شبیهسازی میکند. اگر این گزینه تنظیم شود، شمارهگذاری عنصرهای آرایه از صفر آغاز میشود، یک پارامتر آرایهای بدون زیرنویس به جای کل آرایه به عنصر اول اشاره میکند، و برای تعیین زیرنویس (`${path[2]}' به جای `$path[2]') یا اعمال اصلاحکنندهها روی هر پارامتری (`${PWD:h}' به جای `$PWD:h') استفاده از آکولاد الزامی است.
- KSH_AUTOLOAD <K> <S>
- بارگذاری خودکار توابع را به سبک ksh شبیهسازی میکند. بدین معنا که وقتی تابعی بهطور خودکار بارگذاری میشود، فایل مربوطه صرفاً اجرا میشود و باید خود تابع را تعریف کند. (بهطور پیشفرض، تابع به محتویات فایل تعریف میشود. با این حال، متداولترین حالت سبک ksh - که فایل تنها شامل یک تعریف ساده از تابع است - همیشه به شیوهٔ سازگار با ksh مدیریت میشود.)
- KSH_OPTION_PRINT <K>
- شیوهٔ چاپ وضعیت گزینهها را تغییر میدهد: به جای فهرستهای جداگانه از گزینههای فعال و غیرفعال، تمام گزینهها نشان داده میشوند؛ اگر در وضعیت غیرپیشفرض باشند با `on' و در غیر این صورت با `off' مشخص میگردند.
- KSH_TYPESET
- این گزینه اکنون منسوخ شده است: تقریب بهتری از رفتار دیگر پوستهها با رابط کلمات رزروشده برای declare، export، float، integer، local، readonly و typeset حاصل میشود. توجه داشته باشید این گزینه تنها زمانی اعمال میشود که رابط کلمات رزروشده در حال استفاده نباشد.
شیوهٔ پردازش آرگومانهای خانوادهٔ فرمانهای typeset، از جمله declare، export، float، integer، local و readonly را تغییر میدهد. بدون این گزینه، zsh پس از بسط فرمان و پارامتر در آرگومانهای یک انتساب، تفکیک کلمات عادی را انجام میدهد؛ با فعال بودن آن، تفکیک کلمات در این موارد رخ نمیدهد.
- KSH_ZERO_SUBSCRIPT
- استفاده از زیرنویس با مقدار صفر در عبارتهای آرایه یا رشته را به عنوان ارجاع به نخستین عنصر در نظر میگیرد، یعنی عنصری که معمولاً زیرنویس 1 دارد. اگر KSH_ARRAYS نیز تنظیم شده باشد، نادیده گرفته میشود.
اگر نه این گزینه و نه KSH_ARRAYS تنظیم نشده باشند، دسترسی به یک عنصر از آرایه یا رشته با زیرنویس صفر یک عنصر یا رشتهٔ خالی برمیگرداند، در حالی که تلاش برای مقداردهی به عنصر صفر یک آرایه یا رشته به عنوان خطا در نظر گرفته میشود. با این حال، تلاش برای مقداردهی به یک بازهٔ معتبر از زیرنویس که شامل صفر باشد موفقیتآمیز خواهد بود. به عنوان مثال، اگر KSH_ZERO_SUBSCRIPT تنظیم نشده باشد،
array[0]=(element)
یک خطا است، در حالی که
array[0,1]=(element)
خطا نیست و نخستین عنصر آرایه را جایگزین خواهد کرد.
این گزینه برای سازگاری با نسخههای قدیمیتر پوسته است و استفاده از آن در کدهای جدید توصیه نمیشود.
- POSIX_ALIASES <K> <S>
- هنگامی که این گزینه تنظیم شده باشد، کلمات رزروشده کاندیدای بسط نام مستعار نیستند: هنوز هم میتوان هر یک از آنها را به عنوان یک نام مستعار تعریف کرد، اما آن نام مستعار هرگز بسط داده نخواهد شد. کلمات رزروشده در بخش RESERVED WORDS در zshmisc(1) شرح داده شدهاند.
بسط نام مستعار در حین خوانده شدن متن رخ میدهد؛ بنابراین هنگامی که این گزینه تنظیم میشود، اثر آن تا پایان هر تابع یا هر بخش دیگری از کد پوسته که به عنوان یک واحد تجزیه میشود اعمال نخواهد شد. توجه داشته باشید این موضوع ممکن است حتی در زمان فعال بودن گزینه باعث تفاوتهایی با سایر پوستهها شود. برای مثال، هنگام اجرای یک فرمان با `zsh -c'، یا حتی `zsh -o posixaliases -c'، کل آرگومان فرمان به عنوان یک واحد تجزیه میشود، بنابراین نامهای مستعار تعریفشده در داخل این آرگومان حتی در خطوط بعدی نیز در دسترس نیستند. در صورت تردید، از بهکارگیری نامهای مستعار در کدهای غیرتعاملی خودداری کنید.
- POSIX_ARGZERO
- این گزینه میتواند برای غیرفعال کردن موقت FUNCTION_ARGZERO و در نتیجه بازیابی مقدار $0 به نام استفادهشده برای فراخوانی پوسته (یا آنطور که توسط گزینهٔ خط فرمان -c تنظیم شده است) استفاده شود. برای سازگاری با نسخههای پیشین پوسته، شبیهسازها به جای POSIX_ARGZERO از NO_FUNCTION_ARGZERO استفاده میکنند، که در صورت تغییر حالت شبیهسازی درون یک تابع یا اسکریپت، ممکن است به حوزهٔ دید (scoping) غیرمنتظرهای برای $0 منجر شود. برای پیشگیری از این موضوع، POSIX_ARGZERO را بهطور صریح در فرمان emulate فعال کنید:
emulate sh -o POSIX_ARGZERO
توجه داشته باشید که NO_POSIX_ARGZERO هیچ اثری ندارد مگر اینکه FUNCTION_ARGZERO از پیش در هنگام ورود به تابع یا اسکریپت فعال بوده باشد.
- POSIX_BUILTINS <K> <S>
- هنگامی که این گزینه تنظیم شده باشد، فرمان توکار command میتواند برای اجرای فرمانهای توکار پوسته استفاده شود. انتسابهای پارامتر که پیش از توابع پوسته و توکارهای ویژه مشخص شدهاند پس از پایان اجرای فرمان حفظ میشوند، مگر اینکه پیش از توکار ویژه فرمان توکار command درج شده باشد. توکارهای ویژه عبارتند از: .، :، break، continue، declare، eval، exit، export، integer، local، readonly، return، set، shift، source، times، trap و unset. علاوه بر این، شرایط خطای گوناگون مرتبط با دستورهای داخلی فوق یا exec باعث خروج یک پوسته غیرتعاملی و بازگشت یک پوسته تعاملی به پردازش سطح بالای خود میشوند.
افزون بر این، توابع و دستورهای داخلی پوسته پس از پیشوند exec اجرا نمیشوند؛ دستور مورد نظر برای اجرا باید یک دستور خارجی باشد که در مسیر (path) یافت میشود.
همچنین، دستور داخلی getopts به شیوهای سازگار با POSIX عمل میکند، بدین صورت که متغیر مرتبط OPTIND برای توابع محلی نمیشود و مقدار آن به شکلی متفاوت محاسبه میگردد تا با سایر پوستهها مطابقت داشته باشد.
علاوه بر
این، هشدار
و کد خروج
ویژه از [[ -o
non_existent_option ]]
نادیده
گرفته
میشوند.
- POSIX_IDENTIFIERS <K> <S>
- هنگامی که این گزینه تنظیم شده باشد، تنها کاراکترهای اسکی a تا z، A تا Z، 0 تا 9 و _ میتوانند در شناسهها (نامهای پارامترها و ماژولهای پوسته) استفاده شوند.
علاوه بر این، تنظیم این گزینه اثر جایگزینی پارامتر بدون آکولاد را محدود میکند، به طوری که عبارت $# به عنوان پارامتر $# در نظر گرفته میشود حتی اگر پس از آن یک نام پارامتر معتبر بیاید. هنگامی که این گزینه غیرفعال باشد، zsh اجازه میدهد عباراتی به شکل $#name به طول $name ارجاع دهند، حتی برای متغیرهای خاص، برای نمونه در عباراتی مانند $#- و $#*.
تفاوت دیگر این است که با تنظیم این گزینه، انتساب به یک متغیر تنظیمنشده در بافت محاسباتی باعث میشود که متغیر به جای یک نوع عددی، به صورت یک نوع اسکالر ایجاد شود. بنابراین پس از `unset t; (( t = 3 ))'.، بدون تنظیم بودن POSIX_IDENTIFIERS متغیر t دارای نوع عدد صحیح است، در حالی که با تنظیم بودن آن دارای نوع اسکالر خواهد بود.
هنگامی که این گزینه غیرفعال است و پشتیبانی از کاراکترهای چندبایتی فعال باشد (یعنی در پوسته کامپایل شده باشد و گزینه MULTIBYTE تنظیم شده باشد)، علاوه بر این هر کاراکتر حرفی-عددی در مجموعه کاراکترهای محلی میتواند در شناسهها استفاده شود. توجه داشته باشید که اسکریپتها و توابع نوشتهشده با این ویژگی سازگار و قابل حمل نیستند، و همچنین هر دو گزینه باید پیش از تجزیه شدن اسکریپت یا تابع تنظیم شوند؛ تنظیم آنها در طول اجرا کافی نیست زیرا ساختار دستوری variable=value از پیش به جای یک انتساب، به عنوان یک دستور تجزیه شده است.
اگر پشتیبانی از کاراکترهای چندبایتی در پوسته کامپایل نشده باشد این گزینه نادیده گرفته میشود؛ تمام بایتهایی که بیت بالایی آنها تنظیم شده است میتوانند در شناسهها استفاده شوند. این رفتار غیراستاندارد است اما رفتار سنتی zsh محسوب میشود.
- POSIX_STRINGS <K> <S>
- این گزینه بر پردازش رشتههای داخل نقلقول تأثیر میگذارد. در حال حاضر تنها بر رفتار کاراکترهای null، یعنی کاراکتر 0 در مجموعه کاراکترهای قابلحمل متناظر با US ASCII اثر میگذارد.
هنگامی که این گزینه تنظیم نشده باشد، کاراکترهای null جاسازیشده در رشتههایی به شکل $'...' مانند کاراکترهای معمولی در نظر گرفته میشوند. تمام رشته در داخل پوسته نگهداری شده و در صورت لزوم در فایلها خروجی داده میشود، اگرچه به دلیل محدودیتهای رابط کتابخانهای، رشته در نام فایلها، متغیرهای محیطی یا آرگومانهای برنامههای خارجی در محل کاراکتر null بریده میشود.
هنگامی که این گزینه تنظیم شده باشد، عبارت $'...' در کاراکتر null بریده میشود. توجه داشته باشید که بخشهای باقیمانده از همان رشته فراتر از پایان نقلقولها بریده نمیشوند.
برای نمونه، آرگومان خط فرمان a$'b\0c'd در صورت غیرفعال بودن این گزینه به صورت کاراکترهای a، b، null، c، d، و در صورت فعال بودن این گزینه به صورت کاراکترهای a، b، d در نظر گرفته میشود.
- POSIX_TRAPS <K> <S>
- هنگامی که این گزینه تنظیم شده باشد، رفتار معمول zsh مبنی بر اجرای تلهها برای EXIT هنگام خروج از توابع پوسته نادیده گرفته میشود. در این حالت، دستکاری تلههای EXIT همواره تله سراسری برای خروج از پوسته را تغییر میدهد؛ گزینه LOCAL_TRAPS برای تله EXIT نادیده گرفته میشود.
همچنین، دستور return اجراشده در یک تله بدون هیچ آرگومانی، مقدار را از بافت پیرامونی و نه از کدهای اجراشده در درون تله، از تابع بازمیگرداند.
علاوه بر این، اگر تلهای طوری تنظیم شده باشد که نادیده گرفته شود، این وضعیت هنگام ورود به یک زیرپوسته پابرجا میماند. بدون این گزینه، تله در این نقطه به حالت پیشفرض خود بازنشانی میشود.
- SH_FILE_EXPANSION <K> <S>
- بسط نام فایل (مانند بسط ~) را پیش از بسط پارامتر، جایگزینی دستور، بسط محاسباتی و بسط آکولاد انجام میدهد. اگر این گزینه غیرفعال باشد، این کار پس از بسط آکولاد انجام میشود، به طوری که مواردی مانند `~$USERNAME' و `~{pfalstad,rc}' کار خواهند کرد.
- SH_NULLCMD <K> <S>
- هنگام انجام بازهدایتها از مقادیر NULLCMD و READNULLCMD استفاده نکنید، به جای آن از `:' استفاده کنید (بخش «Redirection» را ببینید).
- SH_OPTION_LETTERS <K> <S>
- اگر این گزینه تنظیم شود، پوسته تلاش میکند گزینههای تکحرفی را (که با set و setopt به کار میروند) همانند ksh تفسیر کند. این امر همچنین بر مقدار پارامتر ویژه - تأثیر میگذارد.
- SH_WORD_SPLIT (-y) <K> <S>
- باعث میشود تفکیک فیلد روی بسطهای پارامتر بدون نقلقول انجام شود. توجه داشته باشید که این گزینه ارتباطی با تفکیک کلمه ندارد. (نگاه کنید به zshexpn(1).)
- TRAPS_ASYNC
- هنگام انتظار برای خروج یک برنامه، سیگنالها را رسیدگی کرده و تلهها را بیدرنگ اجرا میکند. در غیر این صورت تله پس از خروج یک فرآیند فرزند اجرا میشود. توجه داشته باشید که این گزینه نقطه اجرای تلهها را برای هر حالتی به جز زمانی که پوسته در انتظار یک فرآیند فرزند است، تحت تأثیر قرار نمیدهد.
- INTERACTIVE (-i, ksh: -i)
- این یک پوستهٔ تعاملی است. این گزینه در هنگام راهاندازی اولیه در صورتی تنظیم میشود که ورودی استاندارد یک tty باشد و دستورها از ورودی استاندارد خوانده شوند. (به بخش مربوط به SHIN_STDIN مراجعه کنید.) این سازوکار تشخیصی را میتوان با تعیین وضعیتی برای این گزینه در خط فرمان نادیده گرفت. مقدار این گزینه تنها از طریق پرچمهای ارائهشده هنگام فراخوانی پوسته قابل تغییر است. پس از اجرای zsh، تغییر آن امکانپذیر نیست.
- LOGIN (-l, ksh: -l)
- این یک پوستهٔ ورود (login shell) است. اگر این گزینه به طور صریح تنظیم نشده باشد، در صورتی که نخستین نویسهٔ argv[0] ارسالشده به پوسته یک «-» باشد، پوسته به یک پوستهٔ ورود تبدیل میشود.
- PRIVILEGED (-p, ksh: -p)
- حالت ممتاز (privileged mode) را فعال میکند. این گزینه معمولاً زمانی استفاده میشود که قرار است اسکریپت با امتیازات ارتقایافته اجرا شود. این کار باید مستقیماً با گزینهٔ -p برای zsh به صورت زیر انجام گیرد تا در طول راهاندازی اعمال شود.
#!/bin/zsh -p
این گزینه در هنگام راهاندازی در صورتی که شناسه کاربری (گروهی) مؤثر با شناسه کاربری (گروهی) واقعی برابر نباشد، به طور خودکار فعال میشود. در این حالت، غیرفعال کردن گزینه باعث میشود شناسههای کاربری و گروهی مؤثر بر روی شناسههای کاربری و گروهی واقعی تنظیم شوند. توجه داشته باشید که در صورت شکست این عملیات، ممکن است پوسته با شناسههایی متفاوت از آنچه مورد نظر بوده اجرا شود؛ بنابراین یک اسکریپت باید شکست را بررسی کرده و بر اساس آن عمل کند، برای مثال:
unsetopt privileged || exit
گزینهٔ PRIVILEGED بارگذاری (source کردن) فایلهای راهاندازی کاربر را غیرفعال میکند. اگر zsh به عنوان «sh» یا «ksh» با این گزینهٔ تنظیمشده فراخوانی شود، فایل /etc/suid_profile بارگذاری خواهد شد (در پوستههای تعاملی پس از /etc/profile). بارگذاری ~/.profile غیرفعال شده و محتوای متغیر ENV نادیده گرفته میشود. این گزینه را نمیتوان با استفاده از گزینهٔ -m در setopt و unsetopt تغییر داد، و تغییر آن در داخل یک تابع، صرفنظر از گزینهٔ LOCAL_OPTIONS، همیشه آن را به صورت سراسری تغییر میدهد.
- RESTRICTED (-r)
- حالت محدود (restricted mode) را فعال میکند. این گزینه را نمیتوان با استفاده از unsetopt تغییر داد، و تنظیم آن در داخل یک تابع، صرفنظر از گزینهٔ LOCAL_OPTIONS، همیشه آن را به صورت سراسری تغییر میدهد. بخش «Restricted Shell» را ببینید.
- SHIN_STDIN (-s, ksh: -s)
- دستورها از ورودی استاندارد خوانده میشوند. اگر هیچ دستوری با -c مشخص نشده باشد و هیچ فایلی از دستورها تعیین نگردد، دستورها از ورودی استاندارد خوانده میشوند. اگر SHIN_STDIN به طور صریح در خط فرمان تنظیم شود، هر آرگومانی که در غیر این صورت به عنوان فایلی برای اجرا در نظر گرفته میشد، به عنوان یک پارامتر مکانی (positional parameter) معمولی رفتار خواهد شد. توجه داشته باشید که تنظیم یا لغو تنظیم این گزینه در خط فرمان لزوماً بر وضعیتی که این گزینه هنگام اجرای پوسته خواهد داشت تأثیر نمیگذارد - این صرفاً نشاندهندهٔ آن است که آیا دستورها واقعاً از ورودی استاندارد خوانده میشوند یا خیر. مقدار این گزینه تنها از طریق پرچمهای ارائهشده هنگام فراخوانی پوسته قابل تغییر است. پس از اجرای zsh، تغییر آن امکانپذیر نیست.
- SINGLE_COMMAND (-t, ksh: -t)
- اگر پوسته در حال خواندن از ورودی استاندارد باشد، پس از اجرای یک دستور منفرد خارج میشود. این کار همچنین پوسته را غیرتعاملی میکند، مگر اینکه گزینهٔ INTERACTIVE به طور صریح در خط فرمان تنظیم شده باشد. مقدار این گزینه تنها از طریق پرچمهای ارائهشده هنگام فراخوانی پوسته قابل تغییر است. پس از اجرای zsh، تغییر آن امکانپذیر نیست.
- BEEP (+B) <D>
- پخش بوق هشدار هنگام بروز خطا در ZLE.
- COMBINING_CHARS
- فرض میکند که ترمینال نویسههای ترکیبی را بهدرستی نمایش میدهد. بهطور مشخص، اگر پس از یک نویسهٔ الفبایی-عددی پایه، یک یا چند نویسهٔ نشانهگذاری با عرض صفر (zero-width) بیاید، فرض میشود که نویسههای با عرض صفر بهصورت اصلاحاتی بر روی نویسهٔ پایه و در همان عرض نمایش داده خواهند شد. همهٔ ترمینالها این مورد را پشتیبانی نمیکنند. اگر این گزینه تنظیم نشود، نویسههای با عرض صفر بهطور جداگانه با نشانهگذاری ویژه نمایش داده میشوند.
اگر این گزینه تنظیم شود، آزمون الگوی [[:WORD:]] با این فرض که نویسهٔ نشانهگذاری با عرض صفر در ترکیب با یک نویسهٔ کلمه، بهصورت بخشی از یک کلمه استفاده خواهد شد، با آن مطابقت مییابد. در غیر این صورت، پوستهٔ پایه نویسههای ترکیبی را بهطور ویژهای مدیریت نمیکند.
- EMACS
- اگر ZLE بارگذاری شده باشد، فعال کردن این گزینه اثری معادل «bindkey -e» خواهد داشت. علاوه بر این، گزینهٔ VI غیرفعال میشود. غیرفعال کردن آن هیچ اثری ندارد. تضمینی نیست که وضعیت این گزینه نگاشت کلید فعلی را منعکس کند. این گزینه صرفاً برای سازگاری ارائه شده است؛ رابط توصیهشده bindkey است.
- OVERSTRIKE
- راهاندازی ویرایشگر خط در حالت جایگزینی (overstrike).
- SINGLE_LINE_ZLE (-M) <K>
- استفاده از ویرایش تکخطیِ خط فرمان به جای چندخطی.
توجه داشته باشید اگرچه این گزینه در شبیهسازی ksh بهطور پیشفرض فعال است، اما تنها سازگاری ظاهری با ویرایشگر خط ksh فراهم میکند و کارایی ویرایشگر خط zsh را کاهش میدهد. از آنجا که این گزینه تاثیری بر نحو پوسته ندارد، بسیاری از کاربران ممکن است مایل باشند هنگام استفادهٔ تعاملی از شبیهسازی ksh، این گزینه را غیرفعال کنند.
- VI
- اگر ZLE بارگذاری شده باشد، فعال کردن این گزینه اثری معادل «bindkey -v» خواهد داشت. علاوه بر این، گزینهٔ EMACS غیرفعال میشود. غیرفعال کردن آن هیچ اثری ندارد. تضمینی نیست که وضعیت این گزینه نگاشت کلید فعلی را منعکس کند. این گزینه صرفاً برای سازگاری ارائه شده است؛ رابط توصیهشده bindkey است.
- ZLE (-Z)
- استفاده از ویرایشگر خط zsh. بهطور پیشفرض در پوستههای تعاملی متصل به یک ترمینال فعال است.
نامهای مستعار گزینهها (OPTION ALIASES)
برخی گزینهها نامهای جایگزین دارند. این نامهای مستعار هرگز در خروجی استفاده نمیشوند، اما میتوان از آنها همانند نامهای عادی گزینهها هنگام مشخص کردن گزینهها برای پوسته استفاده کرد.
- BRACE_EXPAND
- NO_IGNORE_BRACES (سازگاری با ksh و bash)
- DOT_GLOB
- GLOB_DOTS (سازگاری با bash)
- HASH_ALL
- HASH_CMDS (سازگاری با bash)
- HIST_APPEND
- APPEND_HISTORY (سازگاری با bash)
- HIST_EXPAND
- BANG_HIST (سازگاری با bash)
- LOG
- NO_HIST_NO_FUNCTIONS (سازگاری با ksh)
- MAIL_WARN
- MAIL_WARNING (سازگاری با bash)
- ONE_CMD
- SINGLE_COMMAND (سازگاری با bash)
- PHYSICAL
- CHASE_LINKS (سازگاری با ksh و bash)
- PROMPT_VARS
- PROMPT_SUBST (سازگاری با bash)
- STDIN
- SHIN_STDIN (سازگاری با ksh)
- TRACK_ALL
- HASH_CMDS (سازگاری با ksh).SH "گزینههای تکحرفی (SINGLE LETTER OPTIONS)"
مجموعه پیشفرض (Default set)
- -0
- CORRECT
- -1
- PRINT_EXIT_VALUE
- -2
- NO_BAD_PATTERN
- -3
- NO_NOMATCH
- -4
- GLOB_DOTS
- -5
- NOTIFY
- -6
- BG_NICE
- -7
- IGNORE_EOF
- -8
- MARK_DIRS
- -9
- AUTO_LIST
- -B
- NO_BEEP
- -C
- NO_CLOBBER
- -D
- PUSHD_TO_HOME
- -E
- PUSHD_SILENT
- -F
- NO_GLOB
- -G
- NULL_GLOB
- -H
- RM_STAR_SILENT
- -I
- IGNORE_BRACES
- -J
- AUTO_CD
- -K
- NO_BANG_HIST
- -L
- SUN_KEYBOARD_HACK
- -M
- SINGLE_LINE_ZLE
- -N
- AUTO_PUSHD
- -O
- CORRECT_ALL
- -P
- RC_EXPAND_PARAM
- -Q
- PATH_DIRS
- -R
- LONG_LIST_JOBS
- -S
- REC_EXACT
- -T
- CDABLE_VARS
- -U
- MAIL_WARNING
- -V
- NO_PROMPT_CR
- -W
- AUTO_RESUME
- -X
- LIST_TYPES
- -Y
- MENU_COMPLETE
- -Z
- ZLE
- -a
- ALL_EXPORT
- -e
- ERR_EXIT
- -f
- NO_RCS
- -g
- HIST_IGNORE_SPACE
- -h
- HIST_IGNORE_DUPS
- -i
- INTERACTIVE
- -k
- INTERACTIVE_COMMENTS
- -l
- LOGIN
- -m
- MONITOR
- -n
- NO_EXEC
- -p
- PRIVILEGED
- -r
- RESTRICTED
- -s
- SHIN_STDIN
- -t
- SINGLE_COMMAND
- -u
- NO_UNSET
- -v
- VERBOSE
- -w
- CHASE_LINKS
- -x
- XTRACE
- -y
- SH_WORD_SPLIT
- -C
- NO_CLOBBER
- -T
- TRAPS_ASYNC
- -X
- MARK_DIRS
- -a
- ALL_EXPORT
- -b
- NOTIFY
- -e
- ERR_EXIT
- -f
- NO_GLOB
- -i
- INTERACTIVE
- -l
- LOGIN
- -m
- MONITOR
- -n
- NO_EXEC
- -p
- PRIVILEGED
- -r
- RESTRICTED
- -s
- SHIN_STDIN
- -t
- SINGLE_COMMAND
- -u
- NO_UNSET
- -v
- VERBOSE
- -x
- XTRACE
همچنین توجه داشته باشید
- -A
- توسط set برای تنظیم آرایهها به کار میرود
- -b
- در خط فرمان برای مشخص کردن پایان پردازش گزینهها استفاده میشود
- -c
- در خط فرمان برای مشخص کردن یک دستور تکی استفاده میشود
- -m
- توسط setopt برای تنظیم گزینهها با تطبیق الگو به کار میرود
- -o
- در همه جا برای فراهم کردن امکان استفاده از نامهای طولانی گزینهها به کار میرود
- -s
- توسط set برای مرتبسازی پارامترهای مکانی به کار میرود
| July 12, 2026 | zsh 5.9.2 |