Direnv - סקונילב טקיורפל םייפיצפס הביבס ינתשמ להנ


direnv לש הלעפה תכרעמב ךלש הפילקה רובע האנ חותפ דוק תמויס אוה UNIX ןוגכ Linux ו- MacOS. ןוגכ תויכנוקב ךמותו תחא תיטטס הלעפהל בכרומ אוה bash, zsh, tcsh םיגדו.

.תיחכונה היירפסל םאתהב הביבס ינתשמ קורפלו ןועטל השדח ךרד םשיימ אוה .םירושק תפטעמ לש הלעפה יצבק וא ~/.profile סמוע אלל טקיורפל םייפיצפס הביבס ינתשמ רשפאל איה direnv לש תירק

.phpenv -ו rbenv, pyenv -ל םימודה תואסרג יבורמ לוהינו הנקתה תונורתפ תיינבל וב שמתשהל ןתינ ,ףסונב .הסירפל תודוס תניעט ןכו ,טקיורפ לכל תודדובמ חותיפ תוביבס תריצי ,הביבס ינתשמ (תורישכ הנכות ת

?direnv דבוע ךיא זא

.השקב לכב וב ןיחבהל ןתינ אלו ריהמ אוה הקידבה ךילהת .באה תיירפסו (pwd תדוקפ תועצמאב גיצהל ולכות ותוא) יחכונה םרזב .envrc ץבוק לש ומויק תא קדוב direnv ,הדוקפ תרוש תנעוט הפילקה

.תיחכונה תפטעמל םינימזל םתוא ךפוהו םיאצוימה םינתשמה לכ תא דכול אוהו bash תפטעמ-תת ךותל ותוא ןעוט אוה ,תומיאתמה תואשרהה םע .envrc ץבוקה תא אצומ אוהש עגרב

סקוניל תוכרעמב direnv תנקתה

.גצומש יפכ ךלש תכרעמה תוליבח להנמ תועצמאב לדחמה תרירב ירגאממ הנקתהל הנימז direnv תליבח ,סקוניל תוצפה בורב

$ sudo apt install direnv		#Debian,Ubuntu and Mint
$ sudo dnf install direnv		#Fedora

.ךלש תכרעמב תנקתומה snapd -ב תכמותש הצפה לכ וא CentOS -ו Red Hat Enterprise Linux (RHEL) ןוגכ תורחא תוצפהב

$ sudo snap install direnv

ךלש שבה תפטעמ ךותל direnv רבחל ךיא

. ~/.bashrc ץבוקה ףוסב האבה הרושה תא ףסוה ,Bash רובע המגודל .ךלש תיחכונה סקונילה תפטעמל ותוא רבחל ךילע ,direnv תנקתה רחאל

.היחנהה לע תויצלופינמה תורחא תפטעמ תופסותו rvm, git-prompt רחאל םג עיפומ אוהש אדו

eval "$(direnv hook bash)"

: ~/.zshrc ץבוקה ףוסב האבה הרושה תא ףסוה

eval "$(direnv hook zsh)" 

: ~/.config/fish/config.fish ץבוקה ףוסב האבה הרושה תא ףסוה

eval (direnv hook fish)

.גצומכ ץבוקל ורוקמ וא השדח תפטעמ וחתפו ליעפה ףוסמה ןולח תא ורגס ןכמ רחאל

$ source ~/.bashrc
$ source  ~/.zshrc 
$ source ~/.config/fish/config.fish

Linux Shell -ב direnv -ב שמתשהל דציכ

.הילא רובענו tecmint_projects םשב השדח הירפס רוצינ direnv דבוע דציכ םיגדהל ידכ

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

:קיר תויהל ךירצ ךרעה ,דהדהמ אוה רשאכו הדוקפה תרושב TEST_VARIABLE םשב שדח הנתשמ רוצינ ואוב ,ןכמ רחאל

$ echo $TEST_VARIABLE

: (>) הינפה תיינפה ותו דהה תדוקפ תועצמאב הכותב "TEST_VARIABLE = tecmint תא אציי"\הרושה תא ףיסוהל םיסנמ ונא .direnv ידי לע הלעויש Bash דוק ליכמה שדח .envrc

$ echo export TEST_VARIABLE=tecmint > .envrc

:האבה הדוקפה תלעפה ידי לע ונכות תא רשאל ונילע ,חטבואמ ץבוקכ ותוא םיריכמ ונאש ןוויכמ . .envrc ץבוקה תניעט תא םסוח החטבאה ןונגנמ ,לדחמ תרירבכ

$ direnv allow .

:ינפל ונעבקש TEST_VARIABLE לש ךרעה תא קודבנ ואוב ,הלעוה .envrc ץבוקה ןכותש רחאל ,תעכ

$ echo $TEST_VARIABLE

:קיר תויהל ךירצ אוה ,תפסונ םעפ TEST_VARIABLE לש ךרעה תא קודבנ םאו קרפיי direnv -ה , tecmint_project היירפסהמ םיאצוי ונחנאשכ

$ cd ..
$ echo $TEST_VARIABLE

:אבה ךסמה םוליצב גצומש יפכ ןעטוי .envrc ץבוקה ,tecmint_projects תיירפסל רבוע התאש םעפ לכב

$ cd tecmint_projects/

.deny הדוקפב שמתשה ,ןותנ .envrc לש האשרהה לוטיבל

$ direnv deny .			#in current directory
OR
$ direnv deny /path/to/.envrc

:direnv שיאה ףדב ןייע ,שומיש תוארוהו ףסונ עדימ תלבקל

$ man direnv

.רתוי הברה ךכ לכ תושעלו PATH -ל תושדח תוירפס תולקב ףיסוהל תורשפאמה תויצקנופ רפסמ םע עיגמ stdlib (direnv-stdlib) -ב םג שמתשמ direnv ,ףסונב

:direnv-stdlib לש ינדיה הסינכה ףדב ןייע ,תונימזה תויצקנופה לכ רובע דועיתה תא אוצמל ידכ

$ man direnv-stdlib

.הטמלש בושמה ספוטב שמתשה ,ונתוא ףתשל תובשחמ וא תולאש ךל שי םא !ךליבשב ונל היהש המ לכ הז