Ok, encontrei a resposta:
Existem algumas chaves de registro pouco conhecidas que o cmd.exe procura para executar scripts ou comandos automaticamente na inicialização. A chave em questão era HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor\AutoRun
. Aparentemente, quando eu corri o opam, ele colocou opam configure --autorun
nessa chave de registro. Assim, sempre que eu iniciava o cmd.exe ou executava um arquivo em lotes no PowerShell (que invocava o cmd.exe para executá-lo), ele tentou executar o comando nessa chave. Como o opam foi excluído (e removido do sistema PATH
), eu estava recebendo
'opam' is not recognized as an internal or external command,
operable program or batch file.
Descobri a existência dessa chave do registro no blog do Caelum .
Se você digitar cmd /?
, o texto da ajuda listará as chaves do Registro que ele procura. O texto de ajuda (no Windows 10) diz:
If /D was NOT specified on the command line, then when CMD.EXE starts, it
looks for the following REG_SZ/REG_EXPAND_SZ registry variables, and if
either or both are present, they are executed first.
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
and/or
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
Então, para resolver isso, procurei a chave do registro e a excluí. O problema agora não ocorre mais.