ZSHALL(1) General Commands Manual ZSHALL(1)

zshall - فرامستند راهنمای پوسته Z

از آنجا که zsh ویژگی‌های فراوانی دارد، راهنمای zsh به چندین بخش تقسیم شده است. این صفحه راهنما شامل تمامی صفحات راهنمای مجزا با ترتیب زیر است:

پوسته Zsh یک مفسر دستور یونیکس (shell) است که هم به عنوان یک پوسته ورودی تعاملی و هم به عنوان پردازشگر دستورات اسکریپت پوسته قابل استفاده است. در میان پوسته‌های استاندارد، zsh بیشترین شباهت را به ksh دارد، اما شامل بهبودهای فراوانی است. این پوسته در حالت عملکرد پیش‌فرض خود با POSIX یا سایر پوسته‌ها سازگاری فراهم نمی‌کند: بخش `Compatibility' در زیر را ببینید.

پوسته Zsh دارای امکاناتی چون ویرایش خط فرمان، تصحیح املایی توکار، تکمیل دستورات قابل برنامه‌ریزی، توابع پوسته (با بارگذاری خودکار)، سازوکار تاریخچه و انبوهی از ویژگی‌های دیگر است.

پوسته Zsh در ابتدا توسط Paul Falstad نوشته شد. اکنون Zsh توسط اعضای فهرست پستی zsh-workers در <zsh-workers@zsh.org> نگهداری می‌شود. توسعه آن در حال حاضر توسط Peter Stephenson <pws@zsh.org> هماهنگ می‌شود. برای ارتباط با هماهنگ‌کننده می‌توانید با <coordinator@zsh.org> تماس بگیرید، اما موضوعات مربوط به کدها به طور کلی باید به فهرست پستی ارسال شوند.

پوسته Zsh از طریق پایگاه‌های HTTP و FTP ناشناس زیر در دسترس است.

ftp://ftp.zsh.org/pub
https://www.zsh.org/pub

کد منبع به‌روز از طریق Git در Sourceforge در دسترس است. برای جزئیات به https://sourceforge.net/projects/zsh مراجعه کنید. خلاصه‌ای از دستورالعمل‌های مربوط به بایگانی را می‌توانید در https://zsh.sourceforge.io بیابید.

پوسته Zsh چندین فهرست پستی دارد:

<zsh-announce@zsh.org>
اعلان‌های مربوط به انتشارها، تغییرات عمده در پوسته و ارسال ماهانه Zsh FAQ. (مدیریت‌شده)
<zsh-users@zsh.org>
گفتگوهای کاربران.
<zsh-workers@zsh.org>
هک، توسعه، گزارش‌های باگ و وصله‌ها.
<zsh-security@zsh.org>
فهرست پستی خصوصی (عموم افراد نمی‌توانند در آن عضو شوند) برای بحث درباره گزارش‌های باگ دارای پیامدهای امنیتی، یعنی آسیب‌پذیری‌های احتمالی.

اگر مشکل امنیتی در خود zsh پیدا کردید، لطفاً به این نشانی ایمیل بفرستید.

برای عضویت یا لغو عضویت، نامه‌ای الکترونیکی به نشانی مدیریتی مرتبط با آن فهرست پستی ارسال کنید.

<zsh-announce-subscribe@zsh.org>
<zsh-users-subscribe@zsh.org>
<zsh-workers-subscribe@zsh.org>
<zsh-announce-unsubscribe@zsh.org>
<zsh-users-unsubscribe@zsh.org>
<zsh-workers-unsubscribe@zsh.org>

تنها کافی است در یکی از این فهرست‌های پستی عضو شوید زیرا آن‌ها تودرتو هستند. تمام ارسال‌ها به zsh-announce به طور خودکار به zsh-users فرستاده می‌شوند. تمام ارسال‌ها به zsh-users به طور خودکار به zsh-workers فرستاده می‌شوند.

اگر در عضویت یا لغو عضویت در هر یک از فهرست‌های پستی مشکلی دارید، به <listmaster@zsh.org> ایمیل بزنید.

فهرست‌های پستی بایگانی می‌شوند؛ به بایگانی‌ها می‌توان از طریق نشانی‌های مدیریتی فهرست‌شده در بالا دسترسی داشت. همچنین یک بایگانی ابرمتنی در https://www.zsh.org/mla در دسترس است..SH "پرسش‌های متداول ZSH (THE ZSH FAQ)" پوستهٔ Zsh دارای فهرستی از پرسش‌های متداول (FAQ) است که توسط Peter Stephenson <pws@zsh.org> نگه‌داری می‌شود. این فهرست به طور منظم در گروه خبری comp.unix.shell و فهرست پستی zsh-announce ارسال می‌شود. آخرین نسخهٔ آن را می‌توان در هر یک از پایگاه‌های FTP مربوط به Zsh یا در https://www.zsh.org/FAQ یافت. نشانی تماس برای مسائل مربوط به پرسش‌های متداول <faqmaster@zsh.org> است.

پوستهٔ Zsh دارای یک وب‌گاه است که در https://www.zsh.org قرار دارد. نشانی تماس برای مسائل مربوط به وب‌گاه <webmaster@zsh.org> است.

یک راهنمای کاربر در حال حاضر در دست تهیه است. هدف آن تکمیل کتابچهٔ راهنما با توضیحات و نکاتی دربارهٔ مسائلی است که راهنما در آن‌ها ممکن است مبهم، رمزآلود (hierographic) یا کاملاً سردرگم‌کننده باشد (برای مثال، واژهٔ «hierographic» وجود خارجی ندارد). این راهنما در وضعیت فعلی‌اش در https://zsh.sourceforge.io/Guide قابل مشاهده است. در زمان نگارش این متن، فصل‌های مربوط به فایل‌های راه‌اندازی و محتوای آن‌ها و نیز سامانهٔ کامل‌سازی جدید تا حد زیادی کامل شده بودند.

پرچم‌های زیر هنگام فراخوانی توسط پوسته تفسیر می‌شوند تا مشخص گردد پوسته دستورها را از کجا خواهد خواند:

-c
اولین آرگومان را به جای خواندن دستورها از یک اسکریپت یا ورودی استاندارد، به عنوان دستوری برای اجرا در نظر می‌گیرد. اگر آرگومان‌های دیگری داده شوند، اولین مورد به جای استفاده به عنوان پارامتر مکانی، به $0 انتساب می‌یابد.
پوسته را مجبور می‌کند که تعاملی باشد. همچنان امکان مشخص کردن یک اسکریپت برای اجرا وجود دارد.
پوسته را وادار به خواندن دستورها از ورودی استاندارد می‌کند. اگر پرچم -s موجود نباشد و آرگومانی داده شود، اولین آرگومان به عنوان مسیر یک اسکریپت برای اجرا در نظر گرفته می‌شود.

اگر پس از پردازش گزینه‌ها، آرگومان‌های دیگری باقی مانده باشد و هیچ‌کدام از گزینه‌های -c یا -s ارائه نشده باشند، اولین آرگومان به عنوان نام فایل اسکریپتی حاوی دستورهای پوسته برای اجرا در نظر گرفته می‌شود. اگر گزینهٔ PATH_SCRIPT تنظیم شده باشد و نام فایل شامل مسیر دایرکتوری نباشد (یعنی هیچ «/» در نام وجود نداشته باشد)، ابتدا دایرکتوری جاری و سپس مسیر دستورهای مشخص‌شده توسط متغیر PATH برای یافتن اسکریپت جستجو می‌شوند. اگر این گزینه تنظیم نشده باشد یا نام فایل شامل «/» باشد، مستقیماً استفاده می‌شود.

پس از تخصیص یک یا دو آرگومان اول همان‌طور که در بالا توضیح داده شد، آرگومان‌های باقی‌مانده به پارامترهای مکانی اختصاص می‌یابند.

برای گزینه‌های بیشتر که میان فراخوانی و دستور داخلی set مشترک هستند، zshoptions(1) را ببینید.

گزینهٔ بلند «--emulate» به همراه یک حالت شبیه‌سازی (در کلمه‌ای جداگانه) می‌تواند به پوسته ارسال شود. حالت‌های شبیه‌سازی همان مواردی هستند که برای دستور داخلی emulate شرح داده شده‌اند، zshbuiltins(1) را ببینید. گزینهٔ «--emulate» باید قبل از هر گزینهٔ دیگری قرار گیرد (که در غیر این صورت ممکن است نادیده گرفته شوند)، اما گزینه‌های پس از آن رعایت می‌شوند و می‌توان از آن‌ها برای اصلاح حالت شبیه‌سازی درخواستی استفاده کرد. توجه داشته باشید که در مقایسه با دستور emulate در داخل پوسته، هنگام استفاده از این گزینه اقدامات اضافی خاصی برای تضمین شبیه‌سازی روان انجام می‌شود: برای مثال، متغیرهایی که با کاربرد POSIX تداخل دارند مانند path در داخل پوسته تعریف نمی‌شوند.

گزینه‌ها را می‌توان با استفاده از گزینهٔ -o با نام مشخص کرد. -o مانند یک گزینهٔ تک‌حرفی عمل می‌کند، اما رشته‌ای پس از خود را به عنوان نام گزینه دریافت می‌کند. برای مثال،

zsh -x -o shwordsplit scr

اسکریپت scr را اجرا می‌کند، در حالی که گزینهٔ XTRACE با حرف متناظر «-x» و گزینهٔ SH_WORD_SPLIT با نام تنظیم شده‌اند. گزینه‌ها را می‌توان با استفاده از +o به جای -o با نام خاموش کرد. -o را می‌توان همراه با گزینه‌های تک‌حرفی قبلی تجمیع کرد، بنابراین برای نمونه «-xo shwordsplit» یا «-xoshwordsplit» معادل «-x -o shwordsplit» است.

همچنین می‌توان گزینه‌ها را بر اساس نام با سبک گزینهٔ بلند GNU، «--option-name» مشخص کرد. هنگامی که این کار انجام می‌شود، نویسه‌های «-» در نام گزینه مجاز هستند: آن‌ها به «_» تبدیل شده و بنابراین نادیده گرفته می‌شوند. بنابراین، به عنوان مثال، «zsh --sh-word-split» پوستهٔ zsh را با روشن بودن گزینهٔ SH_WORD_SPLIT فراخوانی می‌کند. مانند سایر نحوهای گزینه‌ها، می‌توان با جایگزینی «-» اولیه با یک «+» گزینه‌ها را خاموش کرد؛ بنابراین «+-sh-word-split» معادل «--no-sh-word-split» است. بر خلاف سایر نحوهای گزینه‌ها، گزینه‌های بلند به سبک GNU را نمی‌توان با هیچ گزینهٔ دیگری تجمیع کرد، بنابراین به عنوان مثال «-x-shwordsplit» یک خطا محسوب می‌شود، نه این که شبیه «-x --shwordsplit» با آن رفتار شود.

گزینهٔ ویژه به سبک GNU یعنی «--version» پشتیبانی می‌شود؛ این گزینه اطلاعات نسخهٔ پوسته را به خروجی استاندارد می‌فرستد و سپس با موفقیت خارج می‌شود. گزینهٔ «--help» نیز پشتیبانی می‌شود؛ این گزینه فهرستی از گزینه‌های قابل استفاده هنگام فراخوانی پوسته را به خروجی استاندارد می‌فرستد و سپس با موفقیت خارج می‌شود.

پردازش گزینه‌ها را می‌توان به دو روش پایان داد، تا به آرگومان‌های بعدی که با «-» یا «+» آغاز می‌شوند اجازه داده شود به عنوان آرگومان‌های عادی رفتار شوند. نخست، یک «-» (یا «+») تنها به عنوان یک آرگومان به خودی خود به پردازش گزینه پایان می‌دهد. دوم، یک گزینهٔ ویژهٔ «--» (یا «+-»)، که ممکن است به تنهایی مشخص شود (که کاربرد استاندارد POSIX است) یا ممکن است با گزینه‌های قبلی تجمیع شود (به طوری که «-x-» معادل «-x --» باشد). گزینه‌ها مجاز به تجمیع شدن بعد از «--» نیستند (بنابراین «-x-f» یک خطاست)، اما به قالب گزینه به سبک GNU که در بالا بحث شد توجه کنید، جایی که «--shwordsplit» مجاز است و به پردازش گزینه‌ها پایان نمی‌دهد.

به جز در مواردی که گزینه‌های تک‌حرفی شبیه‌سازی sh/ksh فعال باشند، گزینهٔ «-b» (یا «+b») به پردازش گزینه‌ها پایان می‌دهد. «-b» شبیه «--» است، به جز این‌که گزینه‌های تک‌حرفی بعدی می‌توانند پس از «-b» تجمیع شوند و طبق معمول اعمال خواهند شد.

پوسته Zsh هنگامی که به ترتیب با عنوان sh یا ksh فراخوانی شود، تلاش می‌کند از sh یا ksh تقلید کند؛ به بیان دقیق‌تر، به حرف نخست نامی که با آن فراخوانی شده است نگاه می‌کند، بدون در نظر گرفتن هرگونه حرف اولیهٔ `r' (که فرض می‌شود نماد `restricted` است)، و چنانچه آن حرف `b'، `s' یا `k' باشد، از sh یا ksh تقلید خواهد کرد. علاوه بر این، اگر به صورت su فراخوانی شود (که در برخی سیستم‌ها هنگامی که پوسته توسط دستور su اجرا می‌شود رخ می‌دهد)، پوسته تلاش خواهد کرد نام جایگزینی را از متغیر محیطی SHELL پیدا کرده و بر اساس آن تقلید را انجام دهد.

در حالت‌های سازگاری sh و ksh پارامترهای زیر خاص نبوده و توسط پوسته مقداردهی اولیه نمی‌شوند: ARGC, argv, cdpath, fignore, fpath, HISTCHARS, mailpath, MANPATH, manpath, path, prompt, PROMPT, PROMPT2, PROMPT3, PROMPT4, psvar, status.

اسکریپت‌های معمول راه‌اندازی/خاموشی zsh اجرا نمی‌شوند. پوسته‌های ورود فایل /etc/profile و به دنبال آن $HOME/.profile را سورس می‌کنند. اگر متغیر محیطی ENV در هنگام فراخوانی مقداردهی شده باشد، $ENV پس از اسکریپت‌های profile سورس می‌شود. مقدار ENV پیش از تفسیر شدن به عنوان یک مسیر، تحت بسط پارامتر، جایگزینی دستور و بسط محاسباتی قرار می‌گیرد. توجه داشته باشید که گزینهٔ PRIVILEGED نیز بر اجرای فایل‌های راه‌اندازی اثر می‌گذارد.

اگر پوسته به عنوان sh یا ksh فراخوانی شود، گزینه‌های زیر تنظیم می‌شوند: NO_BAD_PATTERN, NO_BANG_HIST, NO_BG_NICE, NO_EQUALS, NO_FUNCTION_ARGZERO, GLOB_SUBST, NO_GLOBAL_EXPORT, NO_HUP, INTERACTIVE_COMMENTS, KSH_ARRAYS, NO_MULTIOS, NO_NOMATCH, NO_NOTIFY, POSIX_BUILTINS, NO_PROMPT_PERCENT, RM_STAR_SILENT, SH_FILE_EXPANSION, SH_GLOB, SH_OPTION_LETTERS, SH_WORD_SPLIT. علاوه بر این، اگر zsh به عنوان sh فراخوانی شود، گزینه‌های BSD_ECHO و IGNORE_BRACES تنظیم می‌شوند. همچنین، در صورتی که zsh به عنوان ksh فراخوانی شود، گزینه‌های KSH_OPTION_PRINT, LOCAL_OPTIONS, PROMPT_BANG, PROMPT_SUBST و SINGLE_LINE_ZLE تنظیم می‌گردند.

لطفاً توجه داشته باشید که با وجود تلاش‌های معقول برای برطرف کردن ناسازگاری‌ها در صورت بروز، zsh تقلید کامل از سایر پوسته‌ها و نیز انطباق با POSIX را تضمین نمی‌کند. برای اطلاعات بیشتر دربارهٔ تفاوت‌های میان zsh و دیگر پوسته‌ها، لطفاً به فصل ۲ از FAQ پوسته، https://www.zsh.org/FAQ مراجعه کنید.

هنگامی که نام پایه (basename) دستور مورد استفاده برای فراخوانی zsh با حرف `r' آغاز شود یا گزینهٔ خط فرمانی `-r' در هنگام فراخوانی ارائه گردد، پوسته محدود می‌شود. حالت تقلید پس از حذف حرف `r' از نام فراخوانی تعیین می‌گردد. موارد زیر در حالت محدود غیرفعال می‌شوند:

•
تغییر دایرکتوری با دستور توکار cd
•
تغییر دادن یا لغو مقدار پارامترهای EGID, EUID, GID, HISTFILE, HISTSIZE, IFS, LD_AOUT_LIBRARY_PATH, LD_AOUT_PRELOAD, LD_LIBRARY_PATH, LD_PRELOAD, MODULE_PATH, module_path, PATH, path, SHELL, UID و USERNAME
•
مشخص کردن نام دستورات حاوی /
•
مشخص کردن مسیر نام دستورات با استفاده از hash
•
هدایت خروجی به فایل‌ها
•
استفاده از دستور توکار exec برای جایگزینی پوسته با دستوری دیگر
•
استفاده از jobs -Z برای بازنویسی فضای آرگومان‌ها و محیط پردازش پوسته
•
استفاده از پارامتر ARGV0 برای لغو و جایگزینی argv[0] در دستورات خارجی
•
غیرفعال کردن حالت محدود با set +r یا unsetopt RESTRICTED

این محدودیت‌ها پس از پردازش فایل‌های راه‌اندازی اعمال می‌شوند. فایل‌های راه‌اندازی باید PATH را طوری مقداردهی کنند که به دایرکتوری دستوراتی اشاره کند که بتوان با اطمینان در محیط محدود فراخوانی کرد. آن‌ها همچنین می‌توانند با غیرفعال کردن دستورات توکار انتخابی، محدودیت‌های بیشتری بیفزایند.

حالت محدود را می‌توان در هر زمان با تنظیم گزینهٔ RESTRICTED نیز فعال کرد. این کار بی‌درنگ همهٔ محدودیت‌های توصیف‌شده در بالا را فعال می‌کند، حتی اگر پوسته هنوز تمام فایل‌های راه‌اندازی را پردازش نکرده باشد.

حالت محدود پوسته (Restricted Mode) روشی منسوخ برای محدود کردن اقدامات کاربران است: سیستم‌های مدرن روش‌های بهتر، امن‌تر و قابل اعتمادتری برای مهار اقدامات کاربر دارند، مانند chroot jails، containers و zones.

پیاده‌سازی امن یک پوستهٔ محدود بسیار دشوار است. این ویژگی ممکن است در نگارش‌های آیندهٔ zsh حذف شود.

درک این نکته حائز اهمیت است که محدودیت‌ها تنها بر روی پوسته اعمال می‌شوند، نه بر دستوراتی که اجرا می‌کند (به استثنای برخی دستورات توکار پوسته). در حالی که یک پوستهٔ محدود تنها می‌تواند فهرست محدودی از دستورات در دسترس از طریق متغیر از پیش تعریف‌شدهٔ `PATH' را اجرا کند، اما مانع از اجرای هر دستور دیگری توسط آن دستورات نمی‌شود.

به عنوان مثال، اگر `env' در میان فهرست دستورات allowed (مجاز) باشد، به کاربر اجازه می‌دهد هر دستوری را اجرا کند، چرا که `env' یک دستور توکار پوسته نبوده و می‌تواند هر فایل اجرایی دلخواهی را اجرا کند.

بنابراین هنگام پیاده‌سازی یک چارچوب پوستهٔ محدود، مهم است که کاملاً آگاه باشید هر یک از دستورات یا قابلیت‌های allowed (که ممکن است به عنوان modules در نظر گرفته شوند) چه اقداماتی را می‌توانند انجام دهند.

رفتار بسیاری از دستورات می‌تواند تحت تأثیر متغیرهای محیطی قرار گیرد. به جز چند مورد فهرست‌شده در بالا، zsh محدودیتی برای تنظیم متغیرهای محیطی اعمال نمی‌کند.

اگر یک اسکریپت مفسری چندمنظوره مانند `perl'، `python'، `bash' یا غیره به عنوان دستور محدود در نظر گرفته شود، کاربر می‌تواند با تنظیم متغیرهای محیطی ویژه مانند `PERL5LIB'، `PYTHONPATH'، `BASHENV' (و غیره) محدودیت را دور بزند. در سیستم‌های GNU، با تنظیم متغیر محیطی `GCONV_PATH' می‌توان هر دستوری را وادار کرد که هنگام تبدیل مجموعه کاراکترها (از جمله خود zsh)، کد دلخواه را اجرا کند. این‌ها تنها چند نمونه هستند.

به خاطر داشته باشید که بر خلاف برخی پوسته‌های دیگر، `readonly' در zsh یک ویژگی امنیتی محسوب نمی‌شود، چرا که قابل لغو شدن است و بنابراین نمی‌توان از آن برای کاهش خطرات فوق استفاده کرد.

یک پوستهٔ محدود تنها در صورتی کارآمد است که دستورات مجاز اندک بوده و با دقت نوشته شده باشند تا دسترسی بیشتری نسبت به آنچه در نظر گرفته شده به کاربران ندهند. همچنین مهم است که بارگذاری ماژول‌های zsh توسط کاربر محدود شود، زیرا برخی از آن‌ها مانند `zsh/system'، `zsh/mapfile' و `zsh/files'، امکان دور زدن بیشتر محدودیت‌ها را فراهم می‌سازند. دستورها ابتدا از /etc/zsh/zshenv خوانده می‌شوند؛ این رفتار را نمی‌توان لغو کرد. رفتار پس از آن توسط گزینه‌های RCS و GLOBAL_RCS تغییر می‌یابد؛ مورد نخست بر تمامی فایل‌های راه‌اندازی اثر می‌گذارد، در حالی که دومی تنها بر فایل‌های راه‌اندازی سراسری اثرگذار است (آن‌هایی که در اینجا با مسیری که با / آغاز می‌شود نشان داده شده‌اند). اگر در هر مقطعی یکی از این گزینه‌ها غیرفعال (unset) شود، هر فایل (یا فایل‌های) راه‌اندازی بعدی از نوع مربوطه خوانده نخواهد شد. همچنین این امکان وجود دارد که فایلی در $ZDOTDIR مجدداً GLOBAL_RCS را فعال کند. هر دو گزینهٔ RCS و GLOBAL_RCS به‌طور پیش‌فرض فعال هستند.

سپس دستورها از $ZDOTDIR/.zshenv خوانده می‌شوند. اگر پوسته یک پوستهٔ ورود (login shell) باشد، دستورها از /etc/zsh/zprofile و سپس از $ZDOTDIR/.zprofile خوانده می‌شوند. سپس، اگر پوسته تعاملی (interactive) باشد، دستورها از /etc/zsh/zshrc و پس از آن از $ZDOTDIR/.zshrc خوانده می‌شوند. در نهایت، اگر پوسته از نوع ورود باشد، /etc/zsh/zlogin و $ZDOTDIR/.zlogin خوانده می‌شوند.

هنگامی که یک پوستهٔ ورود خارج می‌شود، فایل‌های $ZDOTDIR/.zlogout و سپس /etc/zsh/zlogout خوانده می‌شوند. این اتفاق چه با خروج صریح از طریق دستورهای exit یا logout رخ دهد، چه با خروج ضمنی بر اثر خواندن پایان فایل (end-of-file) از ترمینال رخ دهد. با این حال، اگر پوسته به دلیل اجرای یک فرایند دیگر با دستور exec خاتمه یابد، فایل‌های خروج (logout) خوانده نخواهند شد. این فایل‌ها نیز تحت تأثیر گزینه‌های RCS و GLOBAL_RCS قرار می‌گیرند. همچنین توجه داشته باشید که گزینهٔ RCS بر ذخیره‌سازی فایل‌های تاریخچه اثر می‌گذارد، بدین معنا که اگر هنگام خروج پوسته گزینهٔ RCS غیرفعال باشد، هیچ فایل تاریخچه‌ای ذخیره نخواهد شد.

اگر ZDOTDIR تنظیم نشده باشد، به‌جای آن از HOME استفاده می‌شود. فایل‌هایی که در بالا به‌عنوان فایل‌های موجود در /etc فهرست شده‌اند، بسته به نوع نصب، ممکن است در پوشهٔ دیگری باشند.

از آنجا که /etc/zsh/zshenv برای تمام نمونه‌های zsh اجرا می‌شود، بسیار مهم است که حجم آن تا حد امکان کوچک نگه داشته شود. به‌ویژه، ایدهٔ خوبی است کدهایی که نیازی به اجرا شدن برای تک‌تک پوسته‌ها ندارند را پشت یک بررسی شرطی به فرم `if [[ -o rcs ]]; then ...' قرار دهید تا در صورت فراخوانی zsh با گزینهٔ `-f'، اجرا نشوند.

هر یک از این فایل‌ها را می‌توان با دستور توکار zcompile از پیش کامپایل کرد (به zshbuiltins(1) مراجعه کنید). اگر یک فایل کامپایل‌شده وجود داشته باشد (با نام فایل اصلی به‌علاوه پسوند .zwc) و از فایل اصلی جدیدتر باشد، فایل کامپایل‌شده به‌جای آن استفاده خواهد شد.

See the file man1/zshroadmap.1.

See the file man1/zshmisc.1.

See the file man1/zshexpn.1.

See the file man1/zshparam.1.

See the file man1/zshoptions.1.

See the file man1/zshbuiltins.1.

See the file man1/zshzle.1.

See the file man1/zshcompwid.1.

See the file man1/zshcompsys.1.

See the file man1/zshcompctl.1.

See the file man1/zshmodules.1.

See the file man1/zshcalsys.1.

See the file man1/zshtcpsys.1.

See the file man1/zshzftpsys.1.

See the file man1/zshcontrib.1.

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
${TMPPREFIX}* (پیش‌فرض /tmp/zsh* است)
/etc/zsh/zshenv
/etc/zsh/zprofile
/etc/zsh/zshrc
/etc/zsh/zlogin
/etc/zsh/zlogout (بسته به نوع نصب - پیش‌فرض /etc است)
sh(1), csh(1), tcsh(1), rc(1), bash(1), ksh(1)

IEEE Standard for information Technology - Portable Operating System Interface (POSIX) - Part 2: Shell and Utilities, IEEE Inc, 1993, ISBN 1-55937-255-9.

July 12, 2026 zsh 5.9.2