หากคุณกำลังพูดถึงแอปของบุคคลที่สามโดยเฉพาะให้ใช้ตัวแปรสภาพแวดล้อม โปรแกรมส่วนใหญ่จะผ่านไปตามสภาพแวดล้อมทั้งหมดไม่เปลี่ยนแปลงเมื่อพวกเขาแยก + exec กระบวนการใหม่
ดังนั้นเริ่มแอพนี้ด้วย env var ที่คุณสามารถตรวจสอบได้ เช่นสร้างนามแฝงสำหรับมันalias vs=RUNNING_FROM_VSCODE=1 VSCode
หรือทำสคริปต์ wrapper เช่นนี้
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
จากนั้นในของ.bashrc
คุณคุณสามารถทำได้
if (($RUNNING_FROM_VSCODE)); then
echo "started from inside VSCode"
# RUNNING_FROM_VSCODE=0 # optional if you only want the immediate child
fi
คำสั่งทางคณิตศาสตร์ทุบตี(( ))
เป็นจริงถ้าการแสดงออกประเมินให้เป็นจำนวนเต็มไม่เป็นศูนย์ (ซึ่งเป็นเหตุผลที่ฉันใช้1
ข้างต้น) สตริงว่าง (สำหรับ unv env var) เป็นเท็จ มันดีสำหรับตัวแปร bash boolean แต่คุณสามารถใช้true
และตรวจสอบกับ POSIX แบบดั้งเดิมได้อย่างง่ายดาย
if [ "x$RUNNING_FROM_VSCODE" = "xtrue" ]; then
echo "started from inside VSCode"
fi
หากแอปของคุณล้างสภาพแวดล้อมสำหรับลูก ๆ ของมันเป็นส่วนใหญ่แต่ยังคงผ่านไปโดย$PATH
ไม่มีการเปลี่ยนแปลงคุณสามารถใช้สิ่งนี้ในเสื้อคลุมของคุณ:
#!/bin/sh
export PATH="$PATH:/dev/null/RUNNING_FROM_VSCODE"
exec VSCode "$@"
และตรวจสอบด้วยการจับคู่รูปแบบเช่นทุบตี[[ "${PATH%RUNNING_FROM_VSCODE}" != "$PATH" ]]
เพื่อตรวจสอบว่าการถอดคำต่อท้ายจาก PATH เปลี่ยนหรือไม่
การทำเช่นนี้ควรทำการค้นหาไดเรกทอรีพิเศษหนึ่งครั้งโดยไม่เป็นอันตรายเมื่อโปรแกรมค้นหาคำสั่งภายนอกที่ไม่พบ /dev/null
แน่นอนไม่ใช่ไดเรกทอรีในระบบใด ๆ ดังนั้นจึงปลอดภัยที่จะใช้เป็นไดเรกทอรีปลอมที่จะส่งผลอย่างรวดเร็วENOTDIR
หากการค้นหา PATH ไม่พบสิ่งที่ต้องการในรายการ PATH ก่อนหน้านี้
env
คำสั่ง ดูว่ามีตัวแปรเฉพาะ VS ที่เราสามารถใช้ได้หรือไม่