Belirli bir üçüncü taraf uygulamasından bahsediyorsanız, bir ortam değişkeni kullanın. Çoğu program, yeni süreçleri çatalla + çalıştırdıklarında tüm ortam boyunca değişmeden geçer.
Bu nedenle, kontrol edebileceğiniz özel bir env var ile bu uygulamayı başlatın . örneğin bunun için bir takma ad oluşturun alias vs=RUNNING_FROM_VSCODE=1 VSCode
veya bunun gibi bir sarıcı komut dosyası oluşturun:
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
Sonra .bashrc
senin içinde yapabilirsin
if (($RUNNING_FROM_VSCODE)); then
echo "started from inside VSCode"
# RUNNING_FROM_VSCODE=0 # optional if you only want the immediate child
fi
(( ))
Eğer ifade sıfırdan farklı bir tamsayı olarak değerlendirilirse bash aritmetik ifadesi doğrudur (bu yüzden 1
yukarıda kullandım ). Boş dize (bir unset env var için) false değeridir. Bas boole değişkenleri için güzel, ancak true
geleneksel bir POSIX ile kolayca kullanabilirsiniz ve kontrol edebilirsiniz.
if [ "x$RUNNING_FROM_VSCODE" = "xtrue" ]; then
echo "started from inside VSCode"
fi
Uygulamanız çoğunlukla çocukları için ortamı temizliyor , ancak yine de $PATH
değişmeden geçiyorsa , bunu paketleyicinizde kullanabilirsiniz:
#!/bin/sh
export PATH="$PATH:/dev/null/RUNNING_FROM_VSCODE"
exec VSCode "$@"
ve [[ "${PATH%RUNNING_FROM_VSCODE}" != "$PATH" ]]
PATH'den bir sonek çıkarmanın onu değiştirip değiştirmediğini kontrol etmek için bash gibi bir desen eşleşmesi ile kontrol edin.
Bu, program bulunmayan harici komutları ararken zararsız bir şekilde ekstra bir dizin araması yapmalıdır. /dev/null
kesinlikle herhangi bir sistemde bir dizin değildir, bu yüzden ENOTDIR
PATH aramaları önceki PATH girişlerinde aradıklarını bulamazsa hızlı bir şekilde sonuçlanacak sahte bir dizin olarak kullanmak güvenlidir .
env
komutu çalıştırmayı deneyin . Kullanabileceğimiz VS'ye özgü bir değişken olup olmadığına bakın.