यदि आप एक विशिष्ट तृतीय-पक्ष ऐप के बारे में बात कर रहे हैं, तो एक पर्यावरण चर का उपयोग करें। अधिकांश कार्यक्रम पूरे वातावरण के साथ गुजरेंगे जब वे नई प्रक्रियाओं को कांटा + निष्पादित करेंगे।
तो, इस ऐप को एक कस्टम एनव संस्करण के साथ शुरू करें जिसे आप जांच सकते हैं । जैसे इसके लिए एक उपनाम बनाते हैं alias vs=RUNNING_FROM_VSCODE=1 VSCode, या इस तरह एक आवरण स्क्रिप्ट बनाते हैं:
#!/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ऊपर उपयोग किया है) का मूल्यांकन करता है, तो एक बैश अंकगणितीय कथन सत्य है । खाली स्ट्रिंग (एक unset env var के लिए) गलत है। यह बाश बूलियन चर के लिए अच्छा है, लेकिन आप बस trueएक पारंपरिक पोसिक्स के साथ आसानी से इसका उपयोग और जांच कर सकते हैं
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" ]]जांच करें कि पीएटीएच से प्रत्यय बदलते हैं या नहीं।
यह हानिरहित रूप से एक अतिरिक्त निर्देशिका लुकअप करना चाहिए, जब प्रोग्राम बाहरी नहीं पाया जाता है। /dev/nullनिश्चित रूप से किसी भी प्रणाली पर एक निर्देशिका नहीं है, इसलिए यह एक फर्जी निर्देशिका के रूप में उपयोग करना सुरक्षित है जो जल्दी से परिणाम देगा ENOTDIRयदि पैथ खोजों को वे नहीं मिलेंगे जो वे पहले के पैठ प्रविष्टियों में देख रहे हैं।
envकमांड चलाने का प्रयास करें । देखें कि क्या कोई वीएस-विशिष्ट चर है जिसका हम उपयोग कर सकते हैं।