Direnv - ຈັດການກັບຕົວປ່ຽນແປງສະພາບແວດລ້ອມສະເພາະຂອງໂຄງການໃນ Linux


direnv ແມ່ນການຂະຫຍາຍແຫຼ່ງເປີດ ສຳ ລັບແກະຂອງທ່ານໃນລະບົບປະຕິບັດການຂອງ UNIX ເຊັ່ນ: Linux ແລະ macOS. ມັນຖືກລວບລວມເຂົ້າໄປໃນການປະຕິບັດແບບຄົງທີ່ແບບດຽວແລະຮອງຮັບຫອຍເຊັ່ນ: bash, zsh, tcsh, ແລະປາ.

ຈຸດປະສົງຕົ້ນຕໍຂອງ direnv ແມ່ນເພື່ອອະນຸຍາດໃຫ້ມີການປ່ຽນແປງສະພາບແວດລ້ອມສະເພາະຂອງໂຄງການໂດຍບໍ່ຕ້ອງປິດລະຫັດ ~/.profile ຫຼືແຟ້ມເລີ່ມຕົ້ນທີ່ກ່ຽວຂ້ອງ. ມັນປະຕິບັດວິທີການ ໃໝ່ ໃນການໂຫຼດແລະຍົກຍ້າຍຕົວແປສິ່ງແວດລ້ອມຂຶ້ນຢູ່ກັບໄດເລກະທໍລີປັດຈຸບັນ.

ມັນຖືກ ນຳ ໃຊ້ໃນການໂຫລດແອັບf 12factor (ວິທີການໃນການສ້າງໂປແກຼມໂປຼແກຼມທີ່ໃຊ້ບໍລິການ) ຕົວແປສະພາບແວດລ້ອມ, ສ້າງສະພາບແວດລ້ອມການພັດທະນາແບບໂດດດ່ຽວຕໍ່ໂຄງການ, ແລະຍັງສາມາດໂຫລດຄວາມລັບ ສຳ ລັບການ ນຳ ໃຊ້. ນອກຈາກນັ້ນ, ມັນສາມາດຖືກນໍາໃຊ້ເພື່ອສ້າງວິທີແກ້ໄຂການຕິດຕັ້ງແລະການຄຸ້ມຄອງແບບຫຼາຍຮູບແບບທີ່ຄ້າຍຄືກັບ rbenv, pyenv, ແລະ phpenv.

ສະນັ້ນ Direnv ເຮັດວຽກໄດ້ແນວໃດ?

ກ່ອນທີ່ຫອຍຈະໂຫລດ ຄຳ ສັ່ງ, direnv ກວດເບິ່ງເອກະສານທີ່ມີຢູ່ຂອງ .envrc ໃນປະຈຸບັນ (ເຊິ່ງທ່ານສາມາດສະແດງໂດຍໃຊ້ ຄຳ ສັ່ງ pwd) ແລະໄດເລກະທໍລີພໍ່ແມ່. ຂັ້ນຕອນການກວດສອບແມ່ນວ່ອງໄວແລະບໍ່ສາມາດສັງເກດເຫັນໄດ້ໃນແຕ່ລະກະຕຸ້ນ.

ເມື່ອມັນພົບເອກະສານ .envrc ທີ່ມີສິດທີ່ ເໝາະ ສົມ, ມັນຈະໂຫລດມັນເຂົ້າໄປໃນຫອຍຍ່ອຍທີ່ແຕກແລະມັນຈະຈັບຕົວແປທັງ ໝົດ ທີ່ສົ່ງອອກມາແລະເຮັດໃຫ້ມັນສາມາດໃຊ້ໄດ້ກັບແກະປະຈຸບັນ.

ການຕິດຕັ້ງ direnv ໃນ Linux Systems

ໃນການແຈກຢາຍ Linux ສ່ວນຫລາຍ, ຊຸດ direnv ສາມາດຕິດຕັ້ງໄດ້ຈາກຫໍສະມຸດໃນຕອນຕົ້ນໂດຍໃຊ້ຕົວຈັດການລະບົບຂອງທ່ານຕາມທີ່ສະແດງ.

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

ກ່ຽວກັບການແຈກຢາຍອື່ນໆເຊັ່ນ Red Hat Enterprise Linux (RHEL) ແລະ CentOS ຫຼືການແຈກຈ່າຍໃດໆທີ່ສະ ໜັບ ສະ ໜູນ snaps, ທ່ານສາມາດຕິດຕັ້ງມັນເປັນ snap. ນີ້ຮຽກຮ້ອງໃຫ້ທ່ານຕິດຕັ້ງ snapd ໃນລະບົບຂອງທ່ານ.

$ sudo snap install direnv

ວິທີການ Hook direnv ເຂົ້າໄປໃນ Shell Bash ຂອງທ່ານ

ຫຼັງຈາກຕິດຕັ້ງ direnv, ທ່ານ ຈຳ ເປັນຕ້ອງເຊື່ອມມັນເຂົ້າໃນຫອຍ Linux ຂອງທ່ານໃນປະຈຸບັນ. ຕົວຢ່າງເຊັ່ນ Bash, ຕື່ມສາຍຕໍ່ໄປນີ້ຢູ່ໃນຕອນທ້າຍຂອງເອກະສານ ~/.bashrc .

ໃຫ້ແນ່ໃຈວ່າມັນປາກົດຢູ່ເຖິງແມ່ນວ່າຫຼັງຈາກ 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

ວິທີການໃຊ້ direnv ໃນ Linux Shell

ເພື່ອສະແດງໃຫ້ເຫັນວ່າ direnv ເຮັດວຽກໄດ້ແນວໃດ, ພວກເຮົາຈະສ້າງໄດເລກະທໍລີ ໃໝ່ ທີ່ມີຊື່ວ່າ tecmint_projects ແລະຍ້າຍເຂົ້າມັນ.

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

ຕໍ່ໄປ, ໃຫ້ສ້າງຕົວແປ ໃໝ່ ທີ່ມີຊື່ວ່າ TEST_VARIABLE ຢູ່ເທິງເສັ້ນ ຄຳ ສັ່ງແລະເມື່ອມັນຖືກຍິນສຽງ, ຄ່າຄວນຈະຫວ່າງ:

$ echo $TEST_VARIABLE

ຕອນນີ້ພວກເຮົາຈະສ້າງເອກະສານ .envrc ໃໝ່ ທີ່ປະກອບດ້ວຍລະຫັດ Bash ເຊິ່ງຈະຖືກໂຫລດໂດຍ direnv. ພວກເຮົາຍັງພະຍາຍາມເພີ່ມເສັ້ນ“ ສົ່ງອອກ TEST_VARIABLE = tecmint” ໃນມັນໂດຍໃຊ້ ຄຳ ສັ່ງແອັກໂກ້ແລະຕົວຊີ້ທິດທາງການສົ່ງຜົນຜະລິດ (>) :

$ echo export TEST_VARIABLE=tecmint > .envrc

ໂດຍຄ່າເລີ່ມຕົ້ນ, ກົນໄກຄວາມປອດໄພຈະກີດຂວາງການໂຫຼດຂອງແຟ້ມ .envrc . ເນື່ອງຈາກພວກເຮົາຮູ້ວ່າມັນເປັນເອກະສານທີ່ປອດໄພ, ພວກເຮົາ ຈຳ ເປັນຕ້ອງໄດ້ອະນຸມັດເນື້ອໃນຂອງມັນໂດຍການ ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້:

$ direnv allow .

ດຽວນີ້ເນື້ອຫາຂອງເອກະສານ .envrc ໄດ້ຖືກອະນຸຍາດໃຫ້ໂຫລດ, ໃຫ້ກວດເບິ່ງມູນຄ່າຂອງລະຫັດທີ່ TEST_VARIABLE ທີ່ພວກເຮົາ ກຳ ນົດໄວ້ກ່ອນ:

$ echo $TEST_VARIABLE

ເມື່ອພວກເຮົາອອກຈາກໄດເລກະທໍລີ tecmint_project , direnv ຈະຖືກໂຫລດແລະຖ້າພວກເຮົາກວດເບິ່ງຄ່າຂອງ TEST_VARIABLE ອີກຄັ້ງ ໜຶ່ງ, ມັນຄວນຈະຫວ່າງ:

$ cd ..
$ echo $TEST_VARIABLE

ທຸກໆຄັ້ງທີ່ທ່ານຍ້າຍໄປທີ່ໄດເລກະທໍລີ tecmint_projects, ແຟ້ມ .envrc ຈະຖືກໂຫລດຕາມທີ່ສະແດງຢູ່ໃນ ໜ້າ ຈໍຕໍ່ໄປນີ້:

$ cd tecmint_projects/

ເພື່ອລົບລ້າງການອະນຸຍາດຂອງ .envrc ທີ່ໃຫ້, ໃຫ້ໃຊ້ ຄຳ ສັ່ງປະຕິເສດ.

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

ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມແລະ ຄຳ ແນະ ນຳ ກ່ຽວກັບການ ນຳ ໃຊ້, ເບິ່ງ ໜ້າ direnv man:

$ man direnv

ນອກຈາກນັ້ນ, direnv ຍັງໃຊ້ stdlib (direnv-stdlib) ມາພ້ອມກັບຫລາຍ ໜ້າ ທີ່ທີ່ຊ່ວຍໃຫ້ທ່ານສາມາດເພີ່ມໄດເລກະທໍລີ ໃໝ່ ເຂົ້າໃນ PATH ຂອງທ່ານໄດ້ງ່າຍແລະເຮັດຫຼາຍສິ່ງຫຼາຍຢ່າງ.

ເພື່ອຊອກຫາເອກະສານ ສຳ ລັບທຸກໆ ໜ້າ ທີ່ທີ່ມີຢູ່, ໃຫ້ກວດເບິ່ງ ໜ້າ ເຂົ້າຂອງປື້ມຄູ່ມື direnv-stdlib:

$ man direnv-stdlib

ນັ້ນແມ່ນສິ່ງທີ່ພວກເຮົາມີ ສຳ ລັບທ່ານ! ຖ້າທ່ານມີ ຄຳ ຖາມຫຼືຄວາມຄິດໃດທີ່ຈະແບ່ງປັນກັບພວກເຮົາ, ໃຫ້ໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.