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 1
atas). String kosong (untuk unset env var) salah. Ini bagus untuk variabel bash boolean, tetapi Anda bisa dengan mudah menggunakan true
dan 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 $PATH
tidak 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/null
jelas bukan direktori pada sistem apa pun, jadi aman digunakan sebagai direktori palsu yang akan dengan cepat menghasilkan ENOTDIR
jika pencarian PATH tidak menemukan apa yang mereka cari di entri PATH sebelumnya.
env
perintah. Lihat apakah ada variabel VS-spesifik yang bisa kita gunakan.