Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

Direnv – จัดการตัวแปรสภาพแวดล้อมเฉพาะโครงการใน Linux

ไดเร็นฟ เป็นส่วนขยายโอเพ่นซอร์สที่ดีสำหรับเชลล์ของคุณบนระบบปฏิบัติการ 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
Direnv – จัดการตัวแปรสภาพแวดล้อมเฉพาะโครงการใน Linux

ทุกครั้งที่คุณเข้าสู่ tecmint_projects ไดเร็กทอรี .envrc ไฟล์จะถูกโหลดตามที่แสดงในภาพหน้าจอต่อไปนี้:

$ cd tecmint_projects/
Direnv – จัดการตัวแปรสภาพแวดล้อมเฉพาะโครงการใน Linux

การเพิกถอนการให้สิทธิ์ของ .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

นั่นคือทั้งหมดที่เรามีให้คุณ! หากคุณมีคำถามหรือความคิดเห็นที่ต้องการแชร์กับเรา โปรดใช้แบบฟอร์มความคิดเห็นด้านล่าง