DIRENV.TOML(1) User Manuals DIRENV.TOML(1)

direnv.toml - فایل پیکربندی direnv

یک فایل پیکربندی در قالب TOML ⟨https://github.com/toml-lang/toml⟩ برای تعیین گزینه‌های پیکربندی گوناگون برای direnv. این فایل از مسیر $XDG_CONFIG_HOME/direnv/direnv.toml (به‌طور معمول ~/.config/direnv/direnv.toml) خوانده می‌شود.

برای نسخه‌های v2.21.0 و پایین‌تر، به‌جای direnv.toml از config.toml استفاده کنید

برای جزئیات درباره نحو این فایل پیکربندی، مخزن گیت‌هاب TOML ⟨https://github.com/toml-lang/toml⟩ را ببینید.

پیکربندی در بخش‌هایی مشخص می‌شود که هر یک جدول‌های سطح‌بالای (top-level tables) ⟨https://github.com/toml-lang/toml#table⟩ خود را دارند، و در هر بخش جفت‌های کلید/مقدار تعیین می‌شوند.

مثال:

[section]
key = "value"

بخش‌های زیر پشتیبانی می‌شوند:

این گزینه امکان تعیین ثابت (hard-code) مسیر bash را فراهم می‌کند. تنظیم این مورد ممکن است برای جلوگیری از خطای direnv هنگام تغییر یافتن PATH مفید باشد.

اگر روی true تنظیم شود، ورودی استاندارد (stdin) در طول ارزیابی .envrc غیرفعال (به /dev/null هدایت) می‌شود.

به direnv >= 2.31.0 نیاز است

اگر روی true تنظیم شود، علاوه‌بر فایل‌های .envrc، فایل‌های .env را نیز جست‌وجو و بارگذاری می‌کند. اگر هر دو فایل .envrc و .env وجود داشته باشند، همیشه .envrc در اولویت قرار خواهد گرفت.

اگر روی true تنظیم شود، فایل .envrc با set -euo pipefail بارگذاری خواهد شد. این گزینه در آینده پیش‌فرض خواهد بود.

مشخص می‌کند چه مدت قبل از اخطار به کاربر مبنی بر طولانی شدن اجرای دستور، صبر شود. مقدار پیش‌فرض "5s" است.

رشته بازه زمانی یک دنباله احتمالاً دارای علامت از اعداد ده‌دهی است که هر یک می‌تواند دارای بخش اعشاری اختیاری و یک پسوند یکا باشد؛ مانند "300ms"، "-1.5h" یا "2h45m". یکاهای معتبر زمان عبارتند از "ns" ،"us" (یا "µs") ،"ms" ،"s" ،"m" ،"h".

اگر بازه زمانی کمتر یا مساوی صفر باشد، این قابلیت غیرفعال می‌شود. در صورت تنظیم متغیر محیطی DIRENV_WARN_TIMEOUT روی هر یک از مقادیر بالا، این مقدار بازنویسی خواهد شد.

برای پنهان کردن تفاوت (diff) متغیرهای محیطی هنگام بارگذاری .envrc، این مقدار را روی true تنظیم کنید. مقدار پیش‌فرض false است.

قالب لاگ را برای خروجی‌های direnv تنظیم می‌کند. برای غیرفعال کردن گزارش‌گیری عادی، آن را روی "-" قرار دهید.

به direnv >= 2.36.0 نیاز است

یک عبارت باقاعده (Regexp) که می‌توان از آن برای پالایش (فیلتر کردن) برخی از لاگ‌ها استفاده کرد.

به direnv >= 2.36.0 نیاز است

مشخص کردن دستورالعمل‌های لیست سفید، سلسله‌مراتب‌های دایرکتوری خاص یا دایرکتوری‌های مشخصی را به‌عنوان «قابل اعتماد» علامت‌گذاری می‌کند -- direnv بدون در نظر گرفتن اینکه فایل‌های .envrc منطبق به‌طور صریح مجاز شده‌اند یا خیر، آن‌ها را ارزیابی می‌کند. از این قابلیت باید با احتیاط زیاد استفاده شود، زیرا هر کسی با توانایی نوشتن فایل در آن دایرکتوری (شامل مشارکت‌کنندگان در مخازن VCS) قادر خواهد بود کدهای دلخواه را روی رایانه شما اجرا کند.

دو نوع دستورالعمل لیست سفید پشتیبانی می‌شود:

آرایه‌ای از رشته‌ها را می‌پذیرد. اگر هر یک از رشته‌های موجود در این فهرست، پیشوندی از مسیر مطلق یک فایل .envrc باشد، آن فایل بدون توجه به محتوا یا سابقه استفاده از direnv allow یا direnv deny، به‌طور ضمنی مجاز خواهد بود.

مثال:

[whitelist]
prefix = [ "/home/user/code/project-a", "~/code/project-b" ]

در این مثال، فایل‌های .envrc زیر به‌طور ضمنی مجاز خواهند بود:

  • /home/user/code/project-a/.envrc
  • /home/user/code/project-a/subdir/.envrc
  • ~/code/project-b/.envrc
  • ~/code/project-b/subdir/.envrc
  • و غیره

در این مثال، فایل‌های .envrc زیر به‌طور ضمنی مجاز نخواهند بود (اگرچه می‌توان آن‌ها را به‌صورت صریح با اجرای direnv allow مجاز کرد):

  • /home/user/project-c/.envrc
  • /opt/random/.envrc

آرایه‌ای از رشته‌ها را می‌پذیرد. هر رشته می‌تواند نام یک دایرکتوری یا مسیر کامل به یک فایل .envrc باشد. اگر نام یک دایرکتوری فرستاده شود، به‌گونه‌ای رفتار خواهد شد که گویی همان مسیر به همراه /.envrc اضافه شده در انتهای آن ارسال شده است. پس از حل نام فایل، هر رشته برای تطابق دقیق با مسیر مطلق یک فایل .envrc بررسی می‌شود. اگر دقیقاً منطبق باشند، آن فایل .envrc بدون توجه به محتوا یا سابقه استفاده از direnv allow یا direnv deny، به‌طور ضمنی مجاز خواهد بود.

مثال:

[whitelist]
exact = [ "/home/user/project-a/.envrc", "~/project-b/subdir-a" ]

در این مثال، فایل‌های .envrc زیر به‌طور ضمنی مجاز خواهند بود و نه هیچ فایل دیگری:

  • /home/user/code/project-a/.envrc
  • ~/project-b/subdir-a

در این مثال، فایل‌های .envrc زیر به‌طور ضمنی مجاز نخواهند بود (اگرچه می‌توان آن‌ها را به‌صورت صریح با اجرای direnv allow مجاز کرد):

  • /home/user/code/project-b/subproject-c/.envrc
  • ~/code/.envrc

مجوز MIT - حق نشر (C) ۲۰۱۹ @zimbatm و مشارکت‌کنندگان

direnv(1), direnv-stdlib(1)

2019 direnv