.TH "ZSHALL" "1" "July 12, 2026" "zsh 5\&.9\&.2" .SH "نام (NAME)" zshall \- فرامستند راهنمای پوسته Z .\" Yodl file: Zsh/intro.yo .SH "نمای کلی (OVERVIEW)" از آنجا که zsh ویژگی‌های فراوانی دارد، راهنمای zsh به چندین بخش تقسیم شده است\&. این صفحه راهنما شامل تمامی صفحات راهنمای مجزا با ترتیب زیر است: .PP .PD 0 .TP \fIzsh\fP نمای کلی Zsh .TP \fIzshroadmap\fP مقدمه‌ای غیررسمی بر کتابچه راهنما .TP \fIzshmisc\fP هر آنچه در سایر بخش‌ها نمی‌گنجد .TP \fIzshexpn\fP بسط دستورها و پارامترهای Zsh .TP \fIzshparam\fP پارامترهای Zsh .TP \fIzshoptions\fP گزینه‌های Zsh .TP \fIzshbuiltins\fP توابع توکار Zsh .TP \fIzshzle\fP ویرایش خط فرمان Zsh .TP \fIzshcompwid\fP ویجت‌های تکمیل Zsh .TP \fIzshcompsys\fP سیستم تکمیل Zsh .TP \fIzshcompctl\fP کنترل تکمیل Zsh .TP \fIzshmodules\fP پیمانه‌های بارگذاری‌پذیر Zsh .TP \fIzshcalsys\fP توابع تقویم توکار Zsh .TP \fIzshtcpsys\fP توابع TCP توکار Zsh .TP \fIzshzftpsys\fP کارخواه FTP توکار Zsh .TP \fIzshcontrib\fP توابع و ابزارهای کمکی بیشتر Zsh .PD .SH "توضیحات (DESCRIPTION)" پوسته Zsh یک مفسر دستور یونیکس (shell) است که هم به عنوان یک پوسته ورودی تعاملی و هم به عنوان پردازشگر دستورات اسکریپت پوسته قابل استفاده است\&. در میان پوسته‌های استاندارد، zsh بیشترین شباهت را به \fBksh\fP دارد، اما شامل بهبودهای فراوانی است\&. این پوسته در حالت عملکرد پیش‌فرض خود با POSIX یا سایر پوسته‌ها سازگاری فراهم نمی‌کند: بخش `Compatibility' در زیر را ببینید\&. .PP پوسته Zsh دارای امکاناتی چون ویرایش خط فرمان، تصحیح املایی توکار، تکمیل دستورات قابل برنامه‌ریزی، توابع پوسته (با بارگذاری خودکار)، سازوکار تاریخچه و انبوهی از ویژگی‌های دیگر است\&. .\" Yodl file: Zsh/metafaq.yo .SH "نویسنده (AUTHOR)" پوسته Zsh در ابتدا توسط Paul Falstad نوشته شد\&. اکنون Zsh توسط اعضای فهرست پستی zsh\-workers در \fB\fP نگهداری می‌شود\&. توسعه آن در حال حاضر توسط Peter Stephenson \fB\fP هماهنگ می‌شود\&. برای ارتباط با هماهنگ‌کننده می‌توانید با \fB\fP تماس بگیرید، اما موضوعات مربوط به کدها به طور کلی باید به فهرست پستی ارسال شوند\&. .SH "در دسترس بودن (AVAILABILITY)" پوسته Zsh از طریق پایگاه‌های HTTP و FTP ناشناس زیر در دسترس است\&. .PP .nf \fBftp://ftp\&.zsh\&.org/pub\fP \fBhttps://www\&.zsh\&.org/pub\fP .fi .PP کد منبع به‌روز از طریق Git در Sourceforge در دسترس است\&. برای جزئیات به \fBhttps://sourceforge\&.net/projects/zsh\fP مراجعه کنید\&. خلاصه‌ای از دستورالعمل‌های مربوط به بایگانی را می‌توانید در \fBhttps://zsh\&.sourceforge\&.io\fP بیابید\&. .PP .SH "فهرست‌های پستی (MAILING LISTS)" پوسته Zsh چندین فهرست پستی دارد: .PP .PD 0 .TP .PD \fB\fP اعلان‌های مربوط به انتشارها، تغییرات عمده در پوسته و ارسال ماهانه Zsh FAQ\&. (مدیریت‌شده) .TP \fB\fP گفتگوهای کاربران\&. .TP \fB\fP هک، توسعه، گزارش‌های باگ و وصله‌ها\&. .TP \fB\fP فهرست پستی خصوصی (عموم افراد نمی‌توانند در آن عضو شوند) برای بحث درباره گزارش‌های باگ دارای پیامدهای امنیتی، یعنی آسیب‌پذیری‌های احتمالی\&. .RS .PP اگر مشکل امنیتی در خود zsh پیدا کردید، لطفاً به این نشانی ایمیل بفرستید\&. .RE .PP برای عضویت یا لغو عضویت، نامه‌ای الکترونیکی به نشانی مدیریتی مرتبط با آن فهرست پستی ارسال کنید\&. .PP .PD 0 .TP \fB\fP .TP \fB\fP .TP \fB\fP .PP .TP \fB\fP .TP \fB\fP .TP \fB\fP .PD .PP تنها کافی است در یکی از این فهرست‌های پستی عضو شوید زیرا آن‌ها تودرتو هستند\&. تمام ارسال‌ها به \fBzsh\-announce\fP به طور خودکار به \fBzsh\-users\fP فرستاده می‌شوند\&. تمام ارسال‌ها به \fBzsh\-users\fP به طور خودکار به \fBzsh\-workers\fP فرستاده می‌شوند\&. .PP اگر در عضویت یا لغو عضویت در هر یک از فهرست‌های پستی مشکلی دارید، به \fB\fP ایمیل بزنید\&. .PP فهرست‌های پستی بایگانی می‌شوند؛ به بایگانی‌ها می‌توان از طریق نشانی‌های مدیریتی فهرست‌شده در بالا دسترسی داشت\&. همچنین یک بایگانی ابرمتنی در \fBhttps://www\&.zsh\&.org/mla\fP در دسترس است\&..SH "پرسش‌های متداول ZSH (THE ZSH FAQ)" پوستهٔ Zsh دارای فهرستی از پرسش‌های متداول (FAQ) است که توسط Peter Stephenson \fB\fP نگه‌داری می‌شود\&. این فهرست به طور منظم در گروه خبری \fBcomp\&.unix\&.shell\fP و فهرست پستی \fBzsh\-announce\fP ارسال می‌شود\&. آخرین نسخهٔ آن را می‌توان در هر یک از پایگاه‌های FTP مربوط به Zsh یا در \fBhttps://www\&.zsh\&.org/FAQ\fP یافت\&. نشانی تماس برای مسائل مربوط به پرسش‌های متداول \fB\fP است\&. .SH "وب‌گاه ZSH (THE ZSH WEB PAGE)" پوستهٔ Zsh دارای یک وب‌گاه است که در \fBhttps://www\&.zsh\&.org\fP قرار دارد\&. نشانی تماس برای مسائل مربوط به وب‌گاه \fB\fP است\&. .SH "راهنمای کاربر ZSH (THE ZSH USERGUIDE)" یک راهنمای کاربر در حال حاضر در دست تهیه است\&. هدف آن تکمیل کتابچهٔ راهنما با توضیحات و نکاتی دربارهٔ مسائلی است که راهنما در آن‌ها ممکن است مبهم، رمزآلود (hierographic) یا کاملاً سردرگم‌کننده باشد (برای مثال، واژهٔ «hierographic» وجود خارجی ندارد)\&. این راهنما در وضعیت فعلی‌اش در \fBhttps://zsh\&.sourceforge\&.io/Guide\fP قابل مشاهده است\&. در زمان نگارش این متن، فصل‌های مربوط به فایل‌های راه‌اندازی و محتوای آن‌ها و نیز سامانهٔ کامل‌سازی جدید تا حد زیادی کامل شده بودند\&. .\" Yodl file: Zsh/invoke.yo .SH "فراخوانی (INVOCATION)" پرچم‌های زیر هنگام فراخوانی توسط پوسته تفسیر می‌شوند تا مشخص گردد پوسته دستورها را از کجا خواهد خواند: .PP .PD 0 .TP .PD \fB\-c\fP اولین آرگومان را به جای خواندن دستورها از یک اسکریپت یا ورودی استاندارد، به عنوان دستوری برای اجرا در نظر می‌گیرد\&. اگر آرگومان‌های دیگری داده شوند، اولین مورد به جای استفاده به عنوان پارامتر مکانی، به \fB$0\fP انتساب می‌یابد\&. .TP \fB\-i\fP پوسته را مجبور می‌کند که تعاملی باشد\&. همچنان امکان مشخص کردن یک اسکریپت برای اجرا وجود دارد\&. .TP \fB\-s\fP پوسته را وادار به خواندن دستورها از ورودی استاندارد می‌کند\&. اگر پرچم \fB\-s\fP موجود نباشد و آرگومانی داده شود، اولین آرگومان به عنوان مسیر یک اسکریپت برای اجرا در نظر گرفته می‌شود\&. .PP اگر پس از پردازش گزینه‌ها، آرگومان‌های دیگری باقی مانده باشد و هیچ‌کدام از گزینه‌های \fB\-c\fP یا \fB\-s\fP ارائه نشده باشند، اولین آرگومان به عنوان نام فایل اسکریپتی حاوی دستورهای پوسته برای اجرا در نظر گرفته می‌شود\&. اگر گزینهٔ \fBPATH_SCRIPT\fP تنظیم شده باشد و نام فایل شامل مسیر دایرکتوری نباشد (یعنی هیچ «\fB/\fP» در نام وجود نداشته باشد)، ابتدا دایرکتوری جاری و سپس مسیر دستورهای مشخص‌شده توسط متغیر \fBPATH\fP برای یافتن اسکریپت جستجو می‌شوند\&. اگر این گزینه تنظیم نشده باشد یا نام فایل شامل «\fB/\fP» باشد، مستقیماً استفاده می‌شود\&. .PP پس از تخصیص یک یا دو آرگومان اول همان‌طور که در بالا توضیح داده شد، آرگومان‌های باقی‌مانده به پارامترهای مکانی اختصاص می‌یابند\&. .PP برای گزینه‌های بیشتر که میان فراخوانی و دستور داخلی \fBset\fP مشترک هستند، \fIzshoptions\fP(1) را ببینید\&. .PP گزینهٔ بلند «\fB\-\fP\fB\-emulate\fP» به همراه یک حالت شبیه‌سازی (در کلمه‌ای جداگانه) می‌تواند به پوسته ارسال شود\&. حالت‌های شبیه‌سازی همان مواردی هستند که برای دستور داخلی \fBemulate\fP شرح داده شده‌اند، \fIzshbuiltins\fP(1) را ببینید\&. گزینهٔ «\fB\-\fP\fB\-emulate\fP» باید قبل از هر گزینهٔ دیگری قرار گیرد (که در غیر این صورت ممکن است نادیده گرفته شوند)، اما گزینه‌های پس از آن رعایت می‌شوند و می‌توان از آن‌ها برای اصلاح حالت شبیه‌سازی درخواستی استفاده کرد\&. توجه داشته باشید که در مقایسه با دستور \fBemulate\fP در داخل پوسته، هنگام استفاده از این گزینه اقدامات اضافی خاصی برای تضمین شبیه‌سازی روان انجام می‌شود: برای مثال، متغیرهایی که با کاربرد POSIX تداخل دارند مانند \fBpath\fP در داخل پوسته تعریف نمی‌شوند\&. .PP گزینه‌ها را می‌توان با استفاده از گزینهٔ \fB\-o\fP با نام مشخص کرد\&. \fB\-o\fP مانند یک گزینهٔ تک‌حرفی عمل می‌کند، اما رشته‌ای پس از خود را به عنوان نام گزینه دریافت می‌کند\&. برای مثال، .PP .RS .nf \fBzsh \-x \-o shwordsplit scr\fP .fi .RE .PP اسکریپت \fBscr\fP را اجرا می‌کند، در حالی که گزینهٔ \fBXTRACE\fP با حرف متناظر «\fB\-x\fP» و گزینهٔ \fBSH_WORD_SPLIT\fP با نام تنظیم شده‌اند\&. گزینه‌ها را می‌توان با استفاده از \fB+o\fP به جای \fB\-o\fP با نام \fIخاموش\fP کرد\&. \fB\-o\fP را می‌توان همراه با گزینه‌های تک‌حرفی قبلی تجمیع کرد، بنابراین برای نمونه «\fB\-xo shwordsplit\fP» یا «\fB\-xoshwordsplit\fP» معادل «\fB\-x \-o shwordsplit\fP» است\&. .PP همچنین می‌توان گزینه‌ها را بر اساس نام با سبک گزینهٔ بلند GNU، «\fB\-\fP\fB\-\fP\fIoption\-name\fP» مشخص کرد\&. هنگامی که این کار انجام می‌شود، نویسه‌های «\fB\-\fP» در نام گزینه مجاز هستند: آن‌ها به «\fB_\fP» تبدیل شده و بنابراین نادیده گرفته می‌شوند\&. بنابراین، به عنوان مثال، «\fBzsh \-\fP\fB\-sh\-word\-split\fP» پوستهٔ zsh را با روشن بودن گزینهٔ \fBSH_WORD_SPLIT\fP فراخوانی می‌کند\&. مانند سایر نحوهای گزینه‌ها، می‌توان با جایگزینی «\fB\-\fP» اولیه با یک «\fB+\fP» گزینه‌ها را خاموش کرد؛ بنابراین «\fB+\-sh\-word\-split\fP» معادل «\fB\-\fP\fB\-no\-sh\-word\-split\fP» است\&. بر خلاف سایر نحوهای گزینه‌ها، گزینه‌های بلند به سبک GNU را نمی‌توان با هیچ گزینهٔ دیگری تجمیع کرد، بنابراین به عنوان مثال «\fB\-x\-shwordsplit\fP» یک خطا محسوب می‌شود، نه این که شبیه «\fB\-x \-\fP\fB\-shwordsplit\fP» با آن رفتار شود\&. .PP گزینهٔ ویژه به سبک GNU یعنی «\fB\-\fP\fB\-version\fP» پشتیبانی می‌شود؛ این گزینه اطلاعات نسخهٔ پوسته را به خروجی استاندارد می‌فرستد و سپس با موفقیت خارج می‌شود\&. گزینهٔ «\fB\-\fP\fB\-help\fP» نیز پشتیبانی می‌شود؛ این گزینه فهرستی از گزینه‌های قابل استفاده هنگام فراخوانی پوسته را به خروجی استاندارد می‌فرستد و سپس با موفقیت خارج می‌شود\&. .PP پردازش گزینه‌ها را می‌توان به دو روش پایان داد، تا به آرگومان‌های بعدی که با «\fB\-\fP» یا «\fB+\fP» آغاز می‌شوند اجازه داده شود به عنوان آرگومان‌های عادی رفتار شوند\&. نخست، یک «\fB\-\fP» (یا «\fB+\fP») تنها به عنوان یک آرگومان به خودی خود به پردازش گزینه پایان می‌دهد\&. دوم، یک گزینهٔ ویژهٔ «\fB\-\fP\fB\-\fP» (یا «\fB+\-\fP»)، که ممکن است به تنهایی مشخص شود (که کاربرد استاندارد POSIX است) یا ممکن است با گزینه‌های قبلی تجمیع شود (به طوری که «\fB\-x\-\fP» معادل «\fB\-x \-\fP\fB\-\fP» باشد)\&. گزینه‌ها مجاز به تجمیع شدن بعد از «\fB\-\fP\fB\-\fP» نیستند (بنابراین «\fB\-x\-f\fP» یک خطاست)، اما به قالب گزینه به سبک GNU که در بالا بحث شد توجه کنید، جایی که «\fB\-\fP\fB\-shwordsplit\fP» مجاز است و به پردازش گزینه‌ها پایان نمی‌دهد\&. .PP به جز در مواردی که گزینه‌های تک‌حرفی شبیه‌سازی \fBsh\fP/\fBksh\fP فعال باشند، گزینهٔ «\fB\-b\fP» (یا «\fB+b\fP») به پردازش گزینه‌ها پایان می‌دهد\&. «\fB\-b\fP» شبیه «\fB\-\fP\fB\-\fP» است، به جز این‌که گزینه‌های تک‌حرفی بعدی می‌توانند پس از «\fB\-b\fP» تجمیع شوند و طبق معمول اعمال خواهند شد\&. .PP .PP .\" Yodl file: Zsh/compat.yo.SH "سازگاری (COMPATIBILITY)" پوسته Zsh هنگامی که به ترتیب با عنوان \fBsh\fP یا \fBksh\fP فراخوانی شود، تلاش می‌کند از \fBsh\fP یا \fBksh\fP تقلید کند؛ به بیان دقیق‌تر، به حرف نخست نامی که با آن فراخوانی شده است نگاه می‌کند، بدون در نظر گرفتن هرگونه حرف اولیهٔ `\fBr\fP' (که فرض می‌شود نماد `restricted` است)، و چنانچه آن حرف `\fBb\fP'، `\fBs\fP' یا `\fBk\fP' باشد، از \fBsh\fP یا \fBksh\fP تقلید خواهد کرد\&. علاوه بر این، اگر به صورت \fBsu\fP فراخوانی شود (که در برخی سیستم‌ها هنگامی که پوسته توسط دستور \fBsu\fP اجرا می‌شود رخ می‌دهد)، پوسته تلاش خواهد کرد نام جایگزینی را از متغیر محیطی \fBSHELL\fP پیدا کرده و بر اساس آن تقلید را انجام دهد\&. .PP در حالت‌های سازگاری \fBsh\fP و \fBksh\fP پارامترهای زیر خاص نبوده و توسط پوسته مقداردهی اولیه نمی‌شوند: \fBARGC\fP, \fBargv\fP, \fBcdpath\fP, \fBfignore\fP, \fBfpath\fP, \fBHISTCHARS\fP, \fBmailpath\fP, \fBMANPATH\fP, \fBmanpath\fP, \fBpath\fP, \fBprompt\fP, \fBPROMPT\fP, \fBPROMPT2\fP, \fBPROMPT3\fP, \fBPROMPT4\fP, \fBpsvar\fP, \fBstatus\fP\&. .PP اسکریپت‌های معمول راه‌اندازی/خاموشی zsh اجرا نمی‌شوند\&. پوسته‌های ورود فایل \fB/etc/profile\fP و به دنبال آن \fB$HOME/\&.profile\fP را سورس می‌کنند\&. اگر متغیر محیطی \fBENV\fP در هنگام فراخوانی مقداردهی شده باشد، \fB$ENV\fP پس از اسکریپت‌های profile سورس می‌شود\&. مقدار \fBENV\fP پیش از تفسیر شدن به عنوان یک مسیر، تحت بسط پارامتر، جایگزینی دستور و بسط محاسباتی قرار می‌گیرد\&. توجه داشته باشید که گزینهٔ \fBPRIVILEGED\fP نیز بر اجرای فایل‌های راه‌اندازی اثر می‌گذارد\&. .PP اگر پوسته به عنوان \fBsh\fP یا \fBksh\fP فراخوانی شود، گزینه‌های زیر تنظیم می‌شوند: \fBNO_BAD_PATTERN\fP, \fBNO_BANG_HIST\fP, \fBNO_BG_NICE\fP, \fBNO_EQUALS\fP, \fBNO_FUNCTION_ARGZERO\fP, \fBGLOB_SUBST\fP, \fBNO_GLOBAL_EXPORT\fP, \fBNO_HUP\fP, \fBINTERACTIVE_COMMENTS\fP, \fBKSH_ARRAYS\fP, \fBNO_MULTIOS\fP, \fBNO_NOMATCH\fP, \fBNO_NOTIFY\fP, \fBPOSIX_BUILTINS\fP, \fBNO_PROMPT_PERCENT\fP, \fBRM_STAR_SILENT\fP, \fBSH_FILE_EXPANSION\fP, \fBSH_GLOB\fP, \fBSH_OPTION_LETTERS\fP, \fBSH_WORD_SPLIT\fP\&. علاوه بر این، اگر zsh به عنوان \fBsh\fP فراخوانی شود، گزینه‌های \fBBSD_ECHO\fP و \fBIGNORE_BRACES\fP تنظیم می‌شوند\&. همچنین، در صورتی که zsh به عنوان \fBksh\fP فراخوانی شود، گزینه‌های \fBKSH_OPTION_PRINT\fP, \fBLOCAL_OPTIONS\fP, \fBPROMPT_BANG\fP, \fBPROMPT_SUBST\fP و \fBSINGLE_LINE_ZLE\fP تنظیم می‌گردند\&. .PP لطفاً توجه داشته باشید که با وجود تلاش‌های معقول برای برطرف کردن ناسازگاری‌ها در صورت بروز، zsh تقلید کامل از سایر پوسته‌ها و نیز انطباق با POSIX را تضمین نمی‌کند\&. برای اطلاعات بیشتر دربارهٔ تفاوت‌های میان zsh و دیگر پوسته‌ها، لطفاً به فصل ۲ از FAQ پوسته، \fBhttps://www\&.zsh\&.org/FAQ\fP مراجعه کنید\&. .\" Yodl file: Zsh/restricted.yo .SH "پوسته محدود (RESTRICTED SHELL)" هنگامی که نام پایه (basename) دستور مورد استفاده برای فراخوانی zsh با حرف `\fBr\fP' آغاز شود یا گزینهٔ خط فرمانی `\fB\-r\fP' در هنگام فراخوانی ارائه گردد، پوسته محدود می‌شود\&. حالت تقلید پس از حذف حرف `\fBr\fP' از نام فراخوانی تعیین می‌گردد\&. موارد زیر در حالت محدود غیرفعال می‌شوند: .PP .PD 0 .TP .PD \(bu تغییر دایرکتوری با دستور توکار \fBcd\fP .TP \(bu تغییر دادن یا لغو مقدار پارامترهای \fBEGID\fP, \fBEUID\fP, \fBGID\fP, \fBHISTFILE\fP, \fBHISTSIZE\fP, \fBIFS\fP, \fBLD_AOUT_LIBRARY_PATH\fP, \fBLD_AOUT_PRELOAD\fP, \fBLD_LIBRARY_PATH\fP, \fBLD_PRELOAD\fP, \fBMODULE_PATH\fP, \fBmodule_path\fP, \fBPATH\fP, \fBpath\fP, \fBSHELL\fP, \fBUID\fP و \fBUSERNAME\fP .TP \(bu مشخص کردن نام دستورات حاوی \fB/\fP .TP \(bu مشخص کردن مسیر نام دستورات با استفاده از \fBhash\fP .TP \(bu هدایت خروجی به فایل‌ها .TP \(bu استفاده از دستور توکار \fBexec\fP برای جایگزینی پوسته با دستوری دیگر .TP \(bu استفاده از \fBjobs \-Z\fP برای بازنویسی فضای آرگومان‌ها و محیط پردازش پوسته .TP \(bu استفاده از پارامتر \fBARGV0\fP برای لغو و جایگزینی \fBargv[0]\fP در دستورات خارجی .TP \(bu غیرفعال کردن حالت محدود با \fBset +r\fP یا \fBunsetopt RESTRICTED\fP .PP این محدودیت‌ها پس از پردازش فایل‌های راه‌اندازی اعمال می‌شوند\&. فایل‌های راه‌اندازی باید \fBPATH\fP را طوری مقداردهی کنند که به دایرکتوری دستوراتی اشاره کند که بتوان با اطمینان در محیط محدود فراخوانی کرد\&. آن‌ها همچنین می‌توانند با غیرفعال کردن دستورات توکار انتخابی، محدودیت‌های بیشتری بیفزایند\&. .PP حالت محدود را می‌توان در هر زمان با تنظیم گزینهٔ \fBRESTRICTED\fP نیز فعال کرد\&. این کار بی‌درنگ همهٔ محدودیت‌های توصیف‌شده در بالا را فعال می‌کند، حتی اگر پوسته هنوز تمام فایل‌های راه‌اندازی را پردازش نکرده باشد\&. .PP حالت محدود پوسته (\fIRestricted Mode\fP) روشی منسوخ برای محدود کردن اقدامات کاربران است: سیستم‌های مدرن روش‌های بهتر، امن‌تر و قابل اعتمادتری برای مهار اقدامات کاربر دارند، مانند \fIchroot jails\fP، \fIcontainers\fP و \fIzones\fP\&. .PP پیاده‌سازی امن یک پوستهٔ محدود بسیار دشوار است\&. این ویژگی ممکن است در نگارش‌های آیندهٔ zsh حذف شود\&. .PP درک این نکته حائز اهمیت است که محدودیت‌ها تنها بر روی پوسته اعمال می‌شوند، نه بر دستوراتی که اجرا می‌کند (به استثنای برخی دستورات توکار پوسته)\&. در حالی که یک پوستهٔ محدود تنها می‌تواند فهرست محدودی از دستورات در دسترس از طریق متغیر از پیش تعریف‌شدهٔ `\fBPATH\fP' را اجرا کند، اما مانع از اجرای هر دستور دیگری توسط آن دستورات نمی‌شود\&. .PP به عنوان مثال، اگر `\fBenv\fP' در میان فهرست دستورات \fIallowed\fP (مجاز) باشد، به کاربر اجازه می‌دهد هر دستوری را اجرا کند، چرا که `\fBenv\fP' یک دستور توکار پوسته نبوده و می‌تواند هر فایل اجرایی دلخواهی را اجرا کند\&. .PP بنابراین هنگام پیاده‌سازی یک چارچوب پوستهٔ محدود، مهم است که کاملاً آگاه باشید هر یک از دستورات یا قابلیت‌های \fIallowed\fP (که ممکن است به عنوان \fImodules\fP در نظر گرفته شوند) چه اقداماتی را می‌توانند انجام دهند\&. .PP رفتار بسیاری از دستورات می‌تواند تحت تأثیر متغیرهای محیطی قرار گیرد\&. به جز چند مورد فهرست‌شده در بالا، zsh محدودیتی برای تنظیم متغیرهای محیطی اعمال نمی‌کند\&. .PP اگر یک اسکریپت مفسری چندمنظوره مانند `\fBperl\fP'، `\fBpython\fP'، `\fBbash\fP' یا غیره به عنوان دستور محدود در نظر گرفته شود، کاربر می‌تواند با تنظیم متغیرهای محیطی ویژه مانند `\fBPERL5LIB\fP'، `\fBPYTHONPATH\fP'، `\fBBASHENV\fP' (و غیره) محدودیت را دور بزند\&. در سیستم‌های GNU، با تنظیم متغیر محیطی `\fBGCONV_PATH\fP' می‌توان هر دستوری را وادار کرد که هنگام تبدیل مجموعه کاراکترها (از جمله خود zsh)، کد دلخواه را اجرا کند\&. این‌ها تنها چند نمونه هستند\&. .PP به خاطر داشته باشید که بر خلاف برخی پوسته‌های دیگر، `\fBreadonly\fP' در zsh یک ویژگی امنیتی محسوب نمی‌شود، چرا که قابل لغو شدن است و بنابراین نمی‌توان از آن برای کاهش خطرات فوق استفاده کرد\&. .PP یک پوستهٔ محدود تنها در صورتی کارآمد است که دستورات مجاز اندک بوده و با دقت نوشته شده باشند تا دسترسی بیشتری نسبت به آنچه در نظر گرفته شده به کاربران ندهند\&. همچنین مهم است که بارگذاری ماژول‌های zsh توسط کاربر محدود شود، زیرا برخی از آن‌ها مانند `\fBzsh/system\fP'، `\fBzsh/mapfile\fP' و `\fBzsh/files\fP'، امکان دور زدن بیشتر محدودیت‌ها را فراهم می‌سازند\&. .\" Yodl file: Zsh/files.yo.SH "فایل‌های راه‌اندازی/خاتمه (STARTUP/SHUTDOWN FILES)" دستورها ابتدا از \fB/etc/zsh/zshenv\fP خوانده می‌شوند؛ این رفتار را نمی‌توان لغو کرد\&. رفتار پس از آن توسط گزینه‌های \fBRCS\fP و \fBGLOBAL_RCS\fP تغییر می‌یابد؛ مورد نخست بر تمامی فایل‌های راه‌اندازی اثر می‌گذارد، در حالی که دومی تنها بر فایل‌های راه‌اندازی سراسری اثرگذار است (آن‌هایی که در اینجا با مسیری که با \fB/\fP آغاز می‌شود نشان داده شده‌اند)\&. اگر در هر مقطعی یکی از این گزینه‌ها غیرفعال (unset) شود، هر فایل (یا فایل‌های) راه‌اندازی بعدی از نوع مربوطه خوانده نخواهد شد\&. همچنین این امکان وجود دارد که فایلی در \fB$ZDOTDIR\fP مجدداً \fBGLOBAL_RCS\fP را فعال کند\&. هر دو گزینهٔ \fBRCS\fP و \fBGLOBAL_RCS\fP به‌طور پیش‌فرض فعال هستند\&. .PP سپس دستورها از \fB$ZDOTDIR/\&.zshenv\fP خوانده می‌شوند\&. اگر پوسته یک پوستهٔ ورود (login shell) باشد، دستورها از \fB/etc/zsh/zprofile\fP و سپس از \fB$ZDOTDIR/\&.zprofile\fP خوانده می‌شوند\&. سپس، اگر پوسته تعاملی (interactive) باشد، دستورها از \fB/etc/zsh/zshrc\fP و پس از آن از \fB$ZDOTDIR/\&.zshrc\fP خوانده می‌شوند\&. در نهایت، اگر پوسته از نوع ورود باشد، \fB/etc/zsh/zlogin\fP و \fB$ZDOTDIR/\&.zlogin\fP خوانده می‌شوند\&. .PP هنگامی که یک پوستهٔ ورود خارج می‌شود، فایل‌های \fB$ZDOTDIR/\&.zlogout\fP و سپس \fB/etc/zsh/zlogout\fP خوانده می‌شوند\&. این اتفاق چه با خروج صریح از طریق دستورهای \fBexit\fP یا \fBlogout\fP رخ دهد، چه با خروج ضمنی بر اثر خواندن پایان فایل (end\-of\-file) از ترمینال رخ دهد\&. با این حال، اگر پوسته به دلیل اجرای یک فرایند دیگر با دستور \fBexec\fP خاتمه یابد، فایل‌های خروج (logout) خوانده نخواهند شد\&. این فایل‌ها نیز تحت تأثیر گزینه‌های \fBRCS\fP و \fBGLOBAL_RCS\fP قرار می‌گیرند\&. همچنین توجه داشته باشید که گزینهٔ \fBRCS\fP بر ذخیره‌سازی فایل‌های تاریخچه اثر می‌گذارد، بدین معنا که اگر هنگام خروج پوسته گزینهٔ \fBRCS\fP غیرفعال باشد، هیچ فایل تاریخچه‌ای ذخیره نخواهد شد\&. .PP اگر \fBZDOTDIR\fP تنظیم نشده باشد، به‌جای آن از \fBHOME\fP استفاده می‌شود\&. فایل‌هایی که در بالا به‌عنوان فایل‌های موجود در \fB/etc\fP فهرست شده‌اند، بسته به نوع نصب، ممکن است در پوشهٔ دیگری باشند\&. .PP از آنجا که \fB/etc/zsh/zshenv\fP برای تمام نمونه‌های zsh اجرا می‌شود، بسیار مهم است که حجم آن تا حد امکان کوچک نگه داشته شود\&. به‌ویژه، ایدهٔ خوبی است کدهایی که نیازی به اجرا شدن برای تک‌تک پوسته‌ها ندارند را پشت یک بررسی شرطی به فرم `\fBif [[ \-o rcs ]]; then \&.\&.\&.\fP' قرار دهید تا در صورت فراخوانی zsh با گزینهٔ `\fB\-f\fP'، اجرا نشوند\&. .PP هر یک از این فایل‌ها را می‌توان با دستور توکار \fBzcompile\fP از پیش کامپایل کرد (به \fIzshbuiltins\fP(1) مراجعه کنید)\&. اگر یک فایل کامپایل‌شده وجود داشته باشد (با نام فایل اصلی به‌علاوه پسوند \fB\&.zwc\fP) و از فایل اصلی جدیدتر باشد، فایل کامپایل‌شده به‌جای آن استفاده خواهد شد\&. .so man1/zshroadmap.1 .so man1/zshmisc.1 .so man1/zshexpn.1 .so man1/zshparam.1 .so man1/zshoptions.1 .so man1/zshbuiltins.1 .so man1/zshzle.1 .so man1/zshcompwid.1 .so man1/zshcompsys.1 .so man1/zshcompctl.1 .so man1/zshmodules.1 .so man1/zshcalsys.1 .so man1/zshtcpsys.1 .so man1/zshzftpsys.1 .so man1/zshcontrib.1 .TH "ZSHALL" "1" "July 12, 2026" "zsh 5\&.9\&.2" .\" Yodl file: Zsh/filelist.yo .SH "فایل‌ها (FILES)" .PD 0 .TP \fB$ZDOTDIR/\&.zshenv\fP .TP \fB$ZDOTDIR/\&.zprofile\fP .TP \fB$ZDOTDIR/\&.zshrc\fP .TP \fB$ZDOTDIR/\&.zlogin\fP .TP \fB$ZDOTDIR/\&.zlogout\fP .TP \fB${TMPPREFIX}*\fP (پیش‌فرض /tmp/zsh* است) .TP \fB/etc/zsh/zshenv\fP .TP \fB/etc/zsh/zprofile\fP .TP \fB/etc/zsh/zshrc\fP .TP \fB/etc/zsh/zlogin\fP .TP \fB/etc/zsh/zlogout\fP (بسته به نوع نصب \- پیش‌فرض \fB/etc\fP است) .PD .\" Yodl file: Zsh/seealso.yo.SH "همچنین ببینید (SEE ALSO)" \fIsh\fP(1), \fIcsh\fP(1), \fItcsh\fP(1), \fIrc\fP(1), \fIbash\fP(1), \fIksh\fP(1) .PP \fBIEEE Standard for information Technology \- Portable Operating System Interface (POSIX) \- Part 2: Shell and Utilities\fP, IEEE Inc, 1993, ISBN 1\-55937\-255\-9\&.