2024/01/30(火) [n年前の日記]
#1 [prog][windows] batファイルで環境変数PATH内の一部を無効化
環境は Windows10 x64 22H2。
自分の環境は、環境変数 PATH の中に、Strawberry Perl のインストールフォルダが登録されている。そのせいで、MinGW利用時、MinGW が持ってないはずのツールが ―― 例えば pkg-config などが、Strawberry Perl の bin/ の中から呼び出されてしまう。たぶん他にも、呼び出されたら困るツールがありそうな気もする。
MinGW を利用する時だけ、Strawberry Perl の bin/ を無効化したい。つまり、環境変数 PATH の中から、Strawberry Perl のインストールフォルダだけを除去したい。
自分の環境は、環境変数 PATH の中に、Strawberry Perl のインストールフォルダが登録されている。そのせいで、MinGW利用時、MinGW が持ってないはずのツールが ―― 例えば pkg-config などが、Strawberry Perl の bin/ の中から呼び出されてしまう。たぶん他にも、呼び出されたら困るツールがありそうな気もする。
MinGW を利用する時だけ、Strawberry Perl の bin/ を無効化したい。つまり、環境変数 PATH の中から、Strawberry Perl のインストールフォルダだけを除去したい。
◎ 文字列置換ができそう :
ググったら、以下が使えそうな気がした。
_バッチファイルの引数の文字列置換・パス展開 | 晴耕雨読
コレを使って、MinGW利用開始前に実行するbatファイル内で、Perlインストールディレクトリを無効化してみた。"Perls" を "_Perls" にしてしまうことで、Perlインストールディレクトリが参照されない状態にする。
件のbatファイルの全文は以下。
mingw.bat
これで上手く行った気がする。mingw.bat を実行してから、which pkg-config と打っても何も表示されない。つまりは Perl のインストールフォルダが見えてない状態になってくれた。
_バッチファイルの引数の文字列置換・パス展開 | 晴耕雨読
%PATH:str1=str2% 変数内の文字列1を文字列2に置換
コレを使って、MinGW利用開始前に実行するbatファイル内で、Perlインストールディレクトリを無効化してみた。"Perls" を "_Perls" にしてしまうことで、Perlインストールディレクトリが参照されない状態にする。
set PATH=%PATH:Perls=_Perls%
件のbatファイルの全文は以下。
mingw.bat
@echo off @rem MinGW,MSYS enable @rem disable perl set PATH=%PATH:Perls=_Perls% @rem Please set your MinGW install Directory. set MINGW_PATH=D:\MinGW set MSYS_PATH=%MINGW_PATH%\\msys\1.0 set MINGWADDPATH=%MINGW_PATH%\bin;%MSYS_PATH%\bin set PATH=%MINGWADDPATH%;%PATH% set CPATH=%MINGW_PATH%\include set C_INCLUDE_PATH=%MINGW_PATH%\include @rem set CPLUS_INCLUDE_PATH=%MINGW_PATH%\include set CPLUS_INCLUDE_PATH=%MINGW_PATH%\lib\gcc\mingw32\6.3.0\include\c++ set LIBRARY_PATH=%MINGW_PATH%\lib;%MINGW_PATH%\lib\gcc\mingw32\6.3.0 echo MinGW (SourceForge, gcc 6.3.0) enable. Add path [%MINGWADDPATH%] echo. echo CPATH = %CPATH% echo C_INCLUDE_PATH = %C_INCLUDE_PATH% echo CPLUS_INCLUDE_PATH = %CPLUS_INCLUDE_PATH% echo LIBRARY_PATH = %LIBRARY_PATH%
これで上手く行った気がする。mingw.bat を実行してから、which pkg-config と打っても何も表示されない。つまりは Perl のインストールフォルダが見えてない状態になってくれた。
[ ツッコむ ]
以上です。