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
sudo
preserve $ 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_reset
sudoers option is enabled. This causes commands to be executed with a minimal environment containingTERM
,PATH
,HOME
,SHELL
,LOGNAME
,USER
andUSERNAME
in addition to variables from the invoking process permitted by theenv_check
andenv_keep
sudoers 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).