Introduction
忘備録。
よくあるのが、Visual Studio の vcvars64.bat とか。
Powershell 内でこれらのバッチを呼び出しても、バッチが別プロセスで実行されるため、バッチで定義された環境変数は呼び出し元に引き継がれない。
例えば、下記のような Powershell。
1 | cmd.exe /c 'C:\Program Files (x86)\Intel\OpenVINO\2022.3.1\setupvars.bat' |
OpenVINO の変数を設定するつもりだが実行結果は下記。
1 | Python 3.10.8 |
じゃあどうするか?
How to resolve?
バッチやシェルスクリプト内で実行した環境変数を呼び出し元に戻して設定すればいい。
Windows
1 | function Call($batfile) |
バッチファイルを cmd.exe の引数として実行し、かつ環境変数をファイルにリダイレクトする。
そのファイルを正規表現で解析し、呼び出し元の Powershell 内で設定しなおすだけ。
実行するとこうなる。
1 | Python 3.10.8 |
Linux
Linux の場合も似た感じ。
下記のシェルスクリプトで変数を定義していたとする。
1 |
|
source
を活用して
1 | function Call($shellfile) |
実行するとこうなる。
1 | TEST: hoge |