特定のサードパーティ製アプリについて話している場合は、環境変数を使用します。ほとんどのプログラムは、新しいプロセスをfork + execすると、環境全体を変更せずに渡します。
したがって、確認できるカスタム環境変数でこのアプリを起動します。たとえば、のようにエイリアスを作成するalias vs=RUNNING_FROM_VSCODE=1 VSCode
か、次のようなラッパースクリプトを作成します。
#!/bin/sh
export RUNNING_FROM_VSCODE=1
exec VSCode "$@"
次に、あなた.bashrc
で行うことができます
if (($RUNNING_FROM_VSCODE)); then
echo "started from inside VSCode"
# RUNNING_FROM_VSCODE=0 # optional if you only want the immediate child
fi
(( ))
式がゼロ以外の整数に評価される場合、bash算術ステートメントはtrueです(これが1
上記で使用した理由です)。空の文字列(未設定のenv varの場合)はfalseです。これはbashブール変数に適していますがtrue
、従来のPOSIX でも簡単に使用および確認できます
if [ "x$RUNNING_FROM_VSCODE" = "xtrue" ]; then
echo "started from inside VSCode"
fi
アプリがその子の環境をほとんどクリアしても、$PATH
変更されずに渡される場合は、これをラッパーで使用できます。
#!/bin/sh
export PATH="$PATH:/dev/null/RUNNING_FROM_VSCODE"
exec VSCode "$@"
そして、bashのようなパターンマッチでそれをチェックして[[ "${PATH%RUNNING_FROM_VSCODE}" != "$PATH" ]]
、PATHからサフィックスを取り除くとそれが変わるかどうかをチェックします。
これは、プログラムが見つからない外部コマンドを探すときに、無害に1つの追加のディレクトリルックアップを実行する必要があります。 /dev/null
はどのシステムのディレクトリでもないので、偽のディレクトリとして使用しても安全ENOTDIR
です。PATH検索で以前のPATHエントリで探していたものが見つからない場合は、すぐに結果が得られます。
env
コマンドを実行してください。使用できるVS固有の変数があるかどうかを確認します。