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 VSCode
o 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é 1
anteriormente). La cadena vacía (para una variable de entorno no establecida) es falsa. Es bueno para las variables booleanas bash, pero podría usarlo true
y 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 $PATH
sin 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/null
definitivamente no es un directorio en ningún sistema, por lo que es seguro usarlo como un directorio falso que resultará rápidamente ENOTDIR
si las búsquedas PATH no encuentran lo que están buscando en las entradas PATH anteriores.
env
comando. Vea si hay una variable específica de VS que podamos usar.