.nh .TH DIRENV 1 "2019" direnv "User Manuals" .SH "نام (NAME)" direnv \- خلوت‌سازی فایل .profile و مدیریت متغیرهای محیطی بر اساس پوشه .SH "خلاصه دستور (SYNOPSIS)" \fBdirenv\fR \fIدستور\fP ... .SH "توضیحات (DESCRIPTION)" دستور \fBdirenv\fR یک مدیر متغیرهای محیطی برای پوسته شماست. این ابزار می‌داند چگونه به پوسته‌های bash، zsh و fish متصل شود تا متغیرهای محیطی را بسته به پوشه جاری شما بارگذاری یا تخلیه کند. این قابلیت به شما امکان می‌دهد متغیرهای محیطی ویژه هر پروژه را داشته باشید و فایل "~/.profile" خود را شلوغ نکنید. .PP پیش از نمایش هر خط فرمان (prompt)، وجود فایل \fB\&.envrc\fR در پوشه جاری و پوشه‌های والد بررسی می‌شود. اگر فایل وجود داشته باشد، در یک زیرپوسته bash بارگذاری شده و تمام متغیرهای صادرشده (exported) توسط direnv ضبط و در پوسته جاری شما در دسترس قرار می‌گیرند، در حالی که متغیرهای پاک‌شده حذف می‌شوند. .PP از آنجا که direnv به صورت یک فایل اجرایی ایستا کامپایل شده است، سرعت آن به اندازه‌ای بالاست که در هر خط فرمان قابل احساس نیست. این ابزار مستقل از زبان برنامه‌نویسی است و می‌توان از آن برای ساخت راهکارهای مشابه rbenv، pyenv، phpenv و... استفاده کرد. .SH "مثال (EXAMPLE)" .EX $ cd ~/my_project $ echo ${FOO-nope} nope $ echo export FOO=foo > .envrc \\.envrc is not allowed $ direnv allow . direnv: reloading direnv: loading .envrc direnv export: +FOO $ echo ${FOO-nope} foo $ cd .. direnv: unloading direnv export: ~PATH $ echo ${FOO-nope} nope .EE .SH "راه‌اندازی (SETUP)" برای کارکرد درست direnv، باید به پوسته متصل شود. هر پوسته مکانیزم افزونه مخصوص خود را دارد: .SS BASH خط زیر را به انتهای فایل \fB~/.bashrc\fR اضافه کنید: .EX eval "$(direnv hook bash)" .EE .PP اطمینان حاصل کنید که این خط حتی بعد از rvm، git-prompt و سایر افزونه‌های پوسته که اعلان خط فرمان را دستکاری می‌کنند قرار گیرد. .SS ZSH خط زیر را به انتهای فایل \fB~/.zshrc\fR اضافه کنید: .EX eval "$(direnv hook zsh)" .EE .SS FISH خط زیر را به انتهای فایل \fB$XDG_CONFIG_HOME/fish/config.fish\fR اضافه کنید: .EX direnv hook fish | source .EE .PP پوسته Fish از ۳ حالت پشتیبانی می‌کند که می‌توانید با متغیر محیطی سراسری \fBdirenv_fish_mode\fR تنظیم کنید: .EX set -g direnv_fish_mode eval_on_arrow # trigger direnv at prompt, and on every arrow-based directory change (default) set -g direnv_fish_mode eval_after_arrow # trigger direnv at prompt, and only after arrow-based directory changes before executing command set -g direnv_fish_mode disable_arrow # trigger direnv at prompt only, this is similar functionality to the original behavior .EE .SS TCSH خط زیر را به انتهای فایل \fB~/.cshrc\fR اضافه کنید: .EX eval `direnv hook tcsh` .EE .SS Elvish دستور زیر را اجرا کنید: .EX ~> mkdir -p ~/.config/elvish/lib ~> direnv hook elvish > ~/.config/elvish/lib/direnv.elv .EE .PP و خط زیر را به فایل \fB~/.config/elvish/rc.elv\fR خود اضافه کنید: .EX use direnv .EE .SS PowerShell خط زیر را به فایل \fB$PROFILE\fR خود اضافه کنید: .EX Invoke-Expression "$(direnv hook pwsh)" .EE .SS Murex خط زیر را به فایل \fB~/.murex_profile\fR خود اضافه کنید: .EX direnv hook murex -> source .EE .SH "دستورات (COMMANDS)" .TP \fBdirenv allow [PATH_TO_RC]\fR مجوز بارگذاری فایل .envrc یا .env مشخص‌شده را به direnv می‌دهد. .TP \fBdirenv deny [PATH_TO_RC]\fR مجوز فایل .envrc یا .env مشخص‌شده را لغو می‌کند. .TP \fBdirenv edit [PATH_TO_RC]\fR فایل PATH_TO_RC یا فایل .envrc یا .env جاری را در ویرایشگر $EDITOR باز کرده و اجازه می‌دهد فایل پس از آن بارگذاری شود. .TP \fBdirenv exec DIR COMMAND [...ARGS]\fR یک دستور را پس از بارگذاری نخستین فایل .envrc یا .env یافت‌شده در DIR اجرا می‌کند. .TP \fBdirenv export SHELL\fR یک فایل .envrc یا .env را بارگذاری کرده و تغییرات را در قالب متغیرهای صادرشده چاپ می‌کند. پوسته‌های پشتیبانی‌شده: bash، zsh، fish، tcsh، elvish، pwsh، murex، json، vim، gha (گیت‌هاب اکشنز)، gzenv، systemd. .TP \fBdirenv fetchurl []\fR نشانی اینترنتی مشخص‌شده را در حافظه CAS برنامه direnv دریافت می‌کند. .TP \fBdirenv help\fR این راهنما را نمایش می‌دهد. .TP \fBdirenv hook SHELL\fR برای راه‌اندازی قلاب پوسته استفاده می‌شود. .TP \fBdirenv prune\fR فایل‌های مجاز قدیمی را حذف می‌کند. .TP \fBdirenv reload\fR بارگذاری مجدد متغیرهای محیطی را فعال می‌کند. .TP \fBdirenv status\fR اطلاعات اشکال‌زدایی وضعیت را چاپ می‌کند. .TP \fBdirenv stdlib\fR کتابخانه استاندارد (stdlib) موجود در زمینه اجرای .envrc را نمایش می‌دهد. .TP \fBdirenv version\fR نسخه برنامه را چاپ می‌کند یا بررسی می‌کند که آیا direnv قدیمی‌تر از VERSION_AT_LEAST است یا خیر. .SH "نحوه استفاده (USAGE)" در یک پوشه هدف، یک فایل \fB\&.envrc\fR ایجاد کرده و دستورات export(1) و unset(1) را درون آن اضافه کنید. .PP در اعلان خط فرمان بعدی متوجه خواهید شد که direnv از مسدود بودن فایل \fB\&.envrc\fR شکایت می‌کند. این یک مکانیزم امنیتی برای جلوگیری از بارگذاری خودکار فایل‌های جدید است. در غیر این صورت هر مخزن گیت که clone یا pull کنید، یا هر آرشیو tar که استخراج کنید، می‌توانست به محض اینکه به آن \fBcd\fR کنید هارد دیسک شما را پاک کند. .PP بنابراین در اینجا مطمئن هستیم که کار مخربی انجام نمی‌دهد. دستور \fBdirenv allow .\fR را وارد کنید و بارگذاری محیط جدید توسط direnv را مشاهده کنید. توجه داشته باشید که \fBdirenv edit .\fR یک میانبر کاربردی است که فایل را در ویرایشگر $EDITOR شما باز می‌کند و در صورت تغییر زمان اصلاح فایل، آن را به طور خودکار بازخوانی می‌کند. .PP اکنون که محیط بارگذاری شده است متوجه می‌شوید که به محض \fBcd\fR کردن به بیرون از دایرکتوری، متغیرها به صورت خودکار تخلیه می‌شوند. اگر مجدداً به آن \fBcd\fR کنید دوباره بارگذاری می‌شود. این پایه و اساس سازوکاری است که به شما اجازه می‌دهد کارهای جالبی انجام دهید. .PP صادر کردن دستی متغیرها کمی تکراری است، بنابراین direnv مجموعه‌ای از توابع کمکی کاربردی را فراهم می‌کند که در زمینه فایل \fB\&.envrc\fR در دسترس قرار می‌گیرند. برای جزئیات بیشتر به صفحه راهنمای direnv-stdlib(1) مراجعه کنید. همچنین می‌توانید افزونه‌های اختصاصی خود را درون فایل‌های \fB$XDG_CONFIG_HOME/direnv/direnvrc\fR یا \fB$XDG_CONFIG_HOME/direnv/lib/*.sh\fR تعریف کنید. .PP امیدواریم این توضیحات برای شروع کار شما کافی باشد. .SH "محیط (ENVIRONMENT)" .TP \fBXDG_CONFIG_HOME\fR مقدار پیش‌فرض \fB$HOME/.config\fR است. .TP \fBXDG_DATA_HOME\fR مقدار پیش‌فرض \fB$HOME/.local/share\fR است. .SH "فایل‌ها (FILES)" .TP \fB$XDG_CONFIG_HOME/direnv/direnv.toml\fR پیکربندی Direnv. صفحه راهنمای direnv.toml(1) را ببینید. .TP \fB$XDG_CONFIG_HOME/direnv/direnvrc\fR کد Bash که قبل از هر فایل \fB\&.envrc\fR بارگذاری می‌شود. مناسب برای افزونه‌های شخصی. .TP \fB$XDG_CONFIG_HOME/direnv/lib/*.sh\fR کد Bash که قبل از هر فایل \fB\&.envrc\fR بارگذاری می‌شود. مناسب برای افزونه‌های متفرقه (Third-party). .TP \fB$XDG_DATA_HOME/direnv/allow\fR ثبت می‌کند کدام فایل‌های \fB\&.envrc\fR توسط \fBdirenv allow\fR مجاز شده‌اند. .SH "مشارکت (CONTRIBUTE)" گزارش‌های باگ، مشارکت‌ها و فورک‌ها مورد استقبال قرار می‌گیرند. .PP تمامی گزارش‌های اشکال یا سایر انواع گفتگوها در پیوند زیر انجام می‌شود: \[la]http://github.com/direnv/direnv/issues\[ra] .PP همچنین یک ویکی در دسترس است که می‌توانید الگوهای استفاده یا سایر نکات و ترفندها را به اشتراک بگذارید: \[la]https://github.com/direnv/direnv/wiki\[ra] .PP یا می‌توانید به کانال #direnv در FreeNode سر بزنید: \[la]irc://#direnv@FreeNode\[ra] .SH "حق نشر (COPYRIGHT)" مجوز MIT - کپی‌رایت (C) 2019 @zimbatm و مشارکت‌کنندگان .SH "همچنین ببینید (SEE ALSO)" direnv-stdlib(1), direnv.toml(1), direnv-fetchurl(1)