ไดเร็นฟ เป็นส่วนขยายโอเพ่นซอร์สที่ดีสำหรับเชลล์ของคุณบนระบบปฏิบัติการ UNIX เช่น Linux และ macOS มันถูกคอมไพล์เป็นไฟล์เรียกทำงานแบบสแตติกเดียวและรองรับเชลล์เช่น ทุบตี , zsh , tcsh และปลา
วัตถุประสงค์หลักของ direnv คืออนุญาตให้ใช้ตัวแปรสภาพแวดล้อมเฉพาะโครงการโดยไม่เกะกะ ~/.profile
หรือไฟล์เชลล์เริ่มต้นที่เกี่ยวข้อง มันใช้วิธีใหม่ในการโหลดและยกเลิกการโหลดตัวแปรสภาพแวดล้อมขึ้นอยู่กับไดเรกทอรีปัจจุบัน
ใช้สำหรับโหลด 12factor แอพ (วิธีการสำหรับการสร้างแอพซอฟต์แวร์ในฐานะบริการ) ตัวแปรสภาพแวดล้อม สร้างสภาพแวดล้อมการพัฒนาแยกตามโครงการ และโหลดความลับสำหรับการปรับใช้ นอกจากนี้ยังสามารถใช้เพื่อสร้างโซลูชันการติดตั้งและการจัดการหลายเวอร์ชันที่คล้ายกับ rbenv , pyenv และ phpenv .
แล้ว direnv ทำงานอย่างไร?
ก่อนที่เชลล์จะโหลดพรอมต์คำสั่ง direnv ตรวจสอบการมีอยู่ของ .envrc
ไฟล์ในปัจจุบัน (ซึ่งคุณสามารถแสดงโดยใช้คำสั่ง pwd) และไดเร็กทอรีหลัก ขั้นตอนการตรวจสอบนั้นรวดเร็วและไม่สามารถสังเกตเห็นได้ในแต่ละการแจ้งเตือน
เมื่อพบ .envrc
ไฟล์ที่มีสิทธิ์ที่เหมาะสมจะโหลดลงใน bash sub-shell และจับตัวแปรที่ส่งออกทั้งหมดและทำให้พร้อมใช้งานในเชลล์ปัจจุบัน
การติดตั้ง direnv ในระบบ Linux
ในการแจกแจง 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
วิธีการเชื่อมต่อ direnv เข้ากับ Bash Shell ของคุณ
หลังจากติดตั้ง direnv คุณต้องเชื่อมต่อเข้ากับเชลล์ Linux ปัจจุบันของคุณ ตัวอย่างเช่น สำหรับ ทุบตี ให้เพิ่มบรรทัดต่อไปนี้ต่อท้าย ~/.bashrc
ไฟล์.
ตรวจสอบให้แน่ใจว่าปรากฏขึ้นแม้หลังจาก rvm , git-prompt และส่วนขยายเชลล์อื่นๆ ที่จัดการพร้อมต์
eval "$(direnv hook bash)"
สำหรับ ZSH Shell
ต่อท้ายบรรทัดต่อไปนี้ที่ส่วนท้ายของ ~/.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
เพื่อแสดงให้เห็นว่า ไดเร็นฟ ใช้งานได้ เราจะสร้างไดเร็กทอรีใหม่ชื่อ tecmint_projects
แล้วก้าวเข้าไป
$ mkdir ~/tecmint_projects $ cd tecmint_projects/
ต่อไป มาสร้างตัวแปรใหม่ชื่อ TEST_VARIABLE
บนบรรทัดคำสั่งและเมื่อมีการสะท้อน ค่าควรว่างเปล่า:
$ echo $TEST_VARIABLE
ตอนนี้เราจะสร้าง .envrc
. ใหม่ ไฟล์ที่มีรหัส Bash ที่จะโหลดโดย direnv . นอกจากนี้เรายังพยายามเพิ่มบรรทัด “ส่งออก TEST_VARIABLE=tecmint ” ในนั้นโดยใช้คำสั่ง echo และอักขระเปลี่ยนเส้นทางเอาต์พุต (>)
:
$ 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 direnv
นอกจากนี้ direnv ยังใช้ stdlib (direnv-stdlib ) มาพร้อมกับฟังก์ชันหลายอย่างที่ช่วยให้คุณสามารถเพิ่มไดเร็กทอรีใหม่ลงใน PATH . ของคุณได้อย่างง่ายดาย และอีกมากมาย
หากต้องการค้นหาเอกสารสำหรับฟังก์ชันที่มีทั้งหมด ให้ตรวจสอบ direnv-stdlib หน้าป้อนด้วยตนเอง:
$ man direnv-stdlib
นั่นคือทั้งหมดที่เรามีให้คุณ! หากคุณมีคำถามหรือความคิดเห็นที่ต้องการแชร์กับเรา โปรดใช้แบบฟอร์มความคิดเห็นด้านล่าง