Jika Anda berbicara tentang satu aplikasi pihak ketiga tertentu, maka gunakan variabel lingkungan. Sebagian besar program akan melewati seluruh lingkungan tidak berubah ketika mereka melakukan proses baru + fork.
Jadi, mulai aplikasi ini dengan custom env var yang dapat Anda periksa . mis. buat alias untuk suka alias vs=RUNNING_FROM_VSCODE=1 VSCode, atau buat skrip pembungkus seperti ini:
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
Maka di Anda .bashrc, Anda bisa melakukannya
if (($RUNNING_FROM_VSCODE)); then
echo "started from inside VSCode"
# RUNNING_FROM_VSCODE=0 # optional if you only want the immediate child
fi
Pernyataan aritmatika bash (( ))benar jika ekspresi mengevaluasi ke integer non-nol (itulah sebabnya saya gunakan di 1atas). String kosong (untuk unset env var) salah. Ini bagus untuk variabel bash boolean, tetapi Anda bisa dengan mudah menggunakan truedan memeriksanya dengan POSIX tradisional
if [ "x$RUNNING_FROM_VSCODE" = "xtrue" ]; then
echo "started from inside VSCode"
fi
Jika sebagian besar aplikasi Anda membersihkan lingkungan untuk anak-anaknya , tetapi masih tetap $PATHtidak berubah, Anda dapat menggunakan ini di pembungkus Anda:
#!/bin/sh
export PATH="$PATH:/dev/null/RUNNING_FROM_VSCODE"
exec VSCode "$@"
dan periksa dengan pencocokan pola seperti bash [[ "${PATH%RUNNING_FROM_VSCODE}" != "$PATH" ]]untuk memeriksa apakah melepas suffix dari PATH mengubahnya.
Ini seharusnya tidak berbahaya melakukan satu pencarian direktori tambahan ketika program mencari perintah eksternal yang tidak ditemukan. /dev/nulljelas bukan direktori pada sistem apa pun, jadi aman digunakan sebagai direktori palsu yang akan dengan cepat menghasilkan ENOTDIRjika pencarian PATH tidak menemukan apa yang mereka cari di entri PATH sebelumnya.
envperintah. Lihat apakah ada variabel VS-spesifik yang bisa kita gunakan.