Si está hablando de una aplicación de terceros específica, use una variable de entorno. La mayoría de los programas pasarán todo el entorno sin cambios cuando bifurcan + ejecutan nuevos procesos.
Entonces, inicie esta aplicación con un entorno personalizado que puede verificar . Por ejemplo, crea un alias para él alias vs=RUNNING_FROM_VSCODE=1 VSCodeo crea un script de envoltura como este:
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
Entonces en tu .bashrc, puedes hacer
if (($RUNNING_FROM_VSCODE)); then
echo "started from inside VSCode"
# RUNNING_FROM_VSCODE=0 # optional if you only want the immediate child
fi
Una declaración aritmética bash (( ))es verdadera si la expresión se evalúa como un número entero distinto de cero (que es la razón por la que usé 1anteriormente). La cadena vacía (para una variable de entorno no establecida) es falsa. Es bueno para las variables booleanas bash, pero podría usarlo truey verificarlo fácilmente con un POSIX tradicional
if [ "x$RUNNING_FROM_VSCODE" = "xtrue" ]; then
echo "started from inside VSCode"
fi
Si su aplicación limpia principalmente el entorno para sus hijos , pero sigue $PATHsin cambios, puede usar esto en su contenedor:
#!/bin/sh
export PATH="$PATH:/dev/null/RUNNING_FROM_VSCODE"
exec VSCode "$@"
y verifíquelo con un patrón de coincidencia como bash [[ "${PATH%RUNNING_FROM_VSCODE}" != "$PATH" ]]para verificar si quitar un sufijo de PATH lo cambia.
Esto debería hacer inofensivamente una búsqueda de directorio adicional cuando el programa busca comandos externos no encontrados. /dev/nulldefinitivamente no es un directorio en ningún sistema, por lo que es seguro usarlo como un directorio falso que resultará rápidamente ENOTDIRsi las búsquedas PATH no encuentran lo que están buscando en las entradas PATH anteriores.
envcomando. Vea si hay una variable específica de VS que podamos usar.