Quando você sudoobtém um pré-configurado $PATH, que é (supostamente) algo parecido com o caminho padrão do usuário root . Seu programa não está nessa lista de diretórios identificados por $PATH.
Veja por exemplo
O sudo tenta ser seguro ao executar comandos externos.
Existem duas maneiras distintas de lidar com variáveis de ambiente. Por padrão, a
opção env_reset sudoers está ativada. Este comando faz com que sejam executados com um ambiente mínimo que contém TERM,
PATH, HOME, SHELL, LOGNAME, USERe USERNAME, além de variáveis do processo de chamada permitida pelos env_checke env_keep sudoers opções. Existe efetivamente uma lista de permissões para variáveis de ambiente.
Se você não pode configurar sudopara preservar o seu $PATH, a solução alternativa 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).
cd. Usando odzdo cdretorno "comando não encontrado". Claro que mais tarde percebeu quecding em um diretório que não tenho permissões, não vai ajudar muito, então eu nem precisa de um shell de root ou necessidade dedzdo ls,dzdo mv, etc. o conteúdo de fora que dir.