Jeśli mówisz o konkretnej aplikacji innej firmy, użyj zmiennej środowiskowej. Większość programów przejdzie bez zmian po całym środowisku, gdy rozwidlają + wykonują nowe procesy.
Więc uruchom tę aplikację z niestandardową zmienną env, którą możesz sprawdzić . np. utwórz dla niego alias alias vs=RUNNING_FROM_VSCODE=1 VSCodelub utwórz skrypt otoki w następujący sposób:
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
Wtedy .bashrcmożesz zrobić
if (($RUNNING_FROM_VSCODE)); then
echo "started from inside VSCode"
# RUNNING_FROM_VSCODE=0 # optional if you only want the immediate child
fi
Instrukcja arytmetyczna bash (( ))jest prawdziwa, jeśli wyrażenie ma wartość niezerową liczbę całkowitą (dlatego użyłem 1powyżej). Pusty ciąg znaków (dla nie ustawionej zmiennej env var) ma wartość false. Przydaje się to w przypadku zmiennych logicznych bash, ale równie łatwo można użyć truei sprawdzić za pomocą tradycyjnego POSIX
if [ "x$RUNNING_FROM_VSCODE" = "xtrue" ]; then
echo "started from inside VSCode"
fi
Jeśli twoja aplikacja w większości usuwa środowisko dla swoich dzieci , ale nadal przechodzi $PATHbez zmian, możesz użyć tego w swoim opakowaniu:
#!/bin/sh
export PATH="$PATH:/dev/null/RUNNING_FROM_VSCODE"
exec VSCode "$@"
i sprawdź go za pomocą dopasowania do wzorca, takiego jak bash, [[ "${PATH%RUNNING_FROM_VSCODE}" != "$PATH" ]]aby sprawdzić, czy usunięcie sufiksu z PATH to zmieni.
Powinno to nieszkodliwie wykonać jedno dodatkowe wyszukiwanie katalogu, gdy program szuka nie znalezionych poleceń zewnętrznych. /dev/nullzdecydowanie nie jest katalogiem w żadnym systemie, więc można bezpiecznie używać go jako fałszywego katalogu, który szybko spowoduje, ENOTDIRże wyszukiwania PATH nie znajdą tego, czego szukają we wcześniejszych wpisach PATH.
envpolecenie. Sprawdź, czy istnieje zmienna specyficzna dla VS, której możemy użyć.