ในเปลือกเมื่อฉันเข้า
echo $demoPath
มันพิมพ์
/usr/local/demo
ฉันจะรับค่าของตัวแปรนี้$demoPath
ใน makefile ได้อย่างไร
ในเปลือกเมื่อฉันเข้า
echo $demoPath
มันพิมพ์
/usr/local/demo
ฉันจะรับค่าของตัวแปรนี้$demoPath
ใน makefile ได้อย่างไร
คำตอบ:
หากคุณส่งออกตัวแปรสภาพแวดล้อม:
export demoPath=/usr/local/demo
คุณสามารถอ้างถึงโดยใช้ชื่อในmakefile
( make
นำเข้าตัวแปรสภาพแวดล้อมทั้งหมดที่คุณตั้งไว้):
DEMOPATH = ${demoPath} # Or $(demoPath) if you prefer.
หากคุณไม่ได้ส่งออกตัวแปรสภาพแวดล้อมจะไม่สามารถเข้าถึงได้จนกว่าคุณจะส่งออกหรือเว้นแต่คุณจะส่งผ่านอย่างชัดเจนในบรรทัดคำสั่ง
make DEMOPATH="${demoPath}" …
หากคุณกำลังใช้อนุพันธ์ C เปลือกทดแทนsetenv demoPath /usr/local/demo
สำหรับexport
คำสั่ง
demoPath=/usr/local/demo make
. คุณอาจต้องการทดสอบและอาจอัปเดตคำตอบของคุณ ไชโย!
สำหรับผู้ที่ต้องการเอกสารอย่างเป็นทางการเพื่อยืนยันพฤติกรรม
ตัวแปรใน make อาจมาจากสภาพแวดล้อมที่รัน make ตัวแปรสภาพแวดล้อมทุกตัวที่ทำให้เห็นเมื่อเริ่มทำงานจะถูกเปลี่ยนเป็นตัวแปร make ที่มีชื่อและค่าเดียวกัน อย่างไรก็ตามการกำหนดอย่างชัดเจนใน makefile หรือด้วยอาร์กิวเมนต์คำสั่งจะแทนที่สภาพแวดล้อม (หากระบุแฟล็ก '-e' ค่าจากสภาพแวดล้อมจะแทนที่การกำหนดใน makefile
https://www.gnu.org/software/make/manual/html_node/Environment.html
all:
echo ${PATH}
หรือเปลี่ยน PATH เพียงคำสั่งเดียว:
all:
PATH=/my/path:${PATH} cmd