Se você estiver falando de um aplicativo de terceiros específico, use uma variável de ambiente. A maioria dos programas passa por todo o ambiente inalterado quando eles executam novos processos.
Portanto, inicie este aplicativo com uma var env personalizada que você pode verificar . por exemplo, crie um alias para isso alias vs=RUNNING_FROM_VSCODE=1 VSCode
ou crie um script de wrapper como este:
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
Então no seu .bashrc
, você pode fazer
if (($RUNNING_FROM_VSCODE)); then
echo "started from inside VSCode"
# RUNNING_FROM_VSCODE=0 # optional if you only want the immediate child
fi
Uma declaração aritmética bash (( ))
é verdadeira se a expressão for avaliada como um número inteiro diferente de zero (razão pela qual usei 1
acima). A cadeia vazia (para um env var não definido) é falsa. É bom para variáveis booleanas do bash, mas você pode facilmente usá-lo true
e procurá-lo com um POSIX tradicional
if [ "x$RUNNING_FROM_VSCODE" = "xtrue" ]; then
echo "started from inside VSCode"
fi
Se seu aplicativo limpa principalmente o ambiente para seus filhos , mas ainda passa $PATH
inalterado, você pode usá-lo no seu wrapper:
#!/bin/sh
export PATH="$PATH:/dev/null/RUNNING_FROM_VSCODE"
exec VSCode "$@"
e verifique-o com uma correspondência de padrão como o bash [[ "${PATH%RUNNING_FROM_VSCODE}" != "$PATH" ]]
para verificar se a remoção de um sufixo do PATH o altera.
Isso deve fazer uma pesquisa extra de diretório inofensivamente quando o programa estiver procurando por comandos externos não encontrados. /dev/null
definitivamente não é um diretório em nenhum sistema, por isso é seguro usá-lo como um diretório falso que resultará rapidamente ENOTDIR
se as pesquisas PATH não encontrarem o que estão procurando nas entradas PATH anteriores.
env
comando. Veja se existe uma variável específica do VS que possamos usar.