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 VSCode
o 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 1
sopra). La stringa vuota (per un env var non impostato) è falsa. È utile per le variabili booleane bash, ma puoi anche usarlo true
e 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 $PATH
invariata, 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/null
non è sicuramente una directory su nessun sistema, quindi è sicuro da usare come una directory fasulla che si tradurrà rapidamente ENOTDIR
se le ricerche PATH non trovano ciò che stanno cercando nelle voci PATH precedenti.
env
comando. Verifica se esiste una variabile specifica VS che possiamo usare.