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 VSCode
lub utwórz skrypt otoki w następujący sposób:
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
Wtedy .bashrc
moż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 1
powyż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ć true
i 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 $PATH
bez 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/null
zdecydowanie 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.
env
polecenie. Sprawdź, czy istnieje zmienna specyficzna dla VS, której możemy użyć.