Quando você sudo , você obtém um $PATH pré-configurado, que (supostamente) é algo como o caminho padrão do usuário do root . Seu programa não está nessa lista de diretórios identificados por $PATH .
Veja por exemplo
- Como tornar
sudopreserve $ PATH? - Por que as variáveis PATH são diferentes? quando rodando via sudo e su?
-
sudoers ( 5) (veja as várias configurações relacionadas a
PATH) - sudo (8)
sudo tries to be safe when executing external commands.
There are two distinct ways to deal with environment variables. By default, the
env_resetsudoers option is enabled. This causes commands to be executed with a minimal environment containingTERM,PATH,HOME,SHELL,LOGNAME,USERandUSERNAMEin addition to variables from the invoking process permitted by theenv_checkandenv_keepsudoers options. There is effectively a whitelist for environment variables.
Se você não puder configurar sudo para preservar seu $PATH , a solução usual é especificar o nome do caminho completo do programa. Isso pode não funcionar bem com scripts que chamam outros executáveis no diretório (não acessado).