Se stai parlando di un'app di terze parti specifica, utilizza una variabile di ambiente. La maggior parte dei programmi passerà invariato nell'intero ambiente quando eseguono il fork + eseguono nuovi processi.
Quindi, avvia questa app con un ambiente personalizzato che puoi verificare . ad esempio crea un alias come tale alias vs=RUNNING_FROM_VSCODE=1 VSCodeo crea uno script wrapper come questo:
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
Quindi nel tuo .bashrc, puoi farlo
if (($RUNNING_FROM_VSCODE)); then
echo "started from inside VSCode"
# RUNNING_FROM_VSCODE=0 # optional if you only want the immediate child
fi
Un'istruzione aritmetica bash (( ))è vera se l'espressione restituisce un numero intero diverso da zero (motivo per cui ho usato 1sopra). La stringa vuota (per un env var non impostato) è falsa. È utile per le variabili booleane bash, ma puoi anche usarlo truee controllarlo con un POSIX tradizionale
if [ "x$RUNNING_FROM_VSCODE" = "xtrue" ]; then
echo "started from inside VSCode"
fi
Se la tua app cancella l'ambiente per i suoi figli , ma continua a rimanere $PATHinvariata, puoi utilizzarla nel tuo wrapper:
#!/bin/sh
export PATH="$PATH:/dev/null/RUNNING_FROM_VSCODE"
exec VSCode "$@"
e controllalo con un pattern-match come bash [[ "${PATH%RUNNING_FROM_VSCODE}" != "$PATH" ]]per verificare se lo stripping di un suffisso da PATH lo modifica.
Questo dovrebbe fare innocuamente una ricerca di directory extra quando il programma cerca comandi esterni non trovati. /dev/nullnon è sicuramente una directory su nessun sistema, quindi è sicuro da usare come una directory fasulla che si tradurrà rapidamente ENOTDIRse le ricerche PATH non trovano ciò che stanno cercando nelle voci PATH precedenti.
envcomando. Verifica se esiste una variabile specifica VS che possiamo usare.