Quando você executa um comando na opção bash via -c , um shell não interativo é gerado. O arquivo ~/.bashrc é fornecido para shells interativos que não são de login (e também para shells interativos de login, provenientes de ~/.profile ). O ponto principal é a interatividade.
O arquivo ~/.bashrc tem o seguinte snippet no começo:
case $- in
*i*) ;;
*) return;;
esac
Isso significa verificar as opções do shell por $- , se o shell não for interativo (sem i flag), saia do arquivo ~/.bashrc .
Então, como você está gerando um shell não interativo via bash -c , o PATH que você definiu no final não será lido.
Você tem poucas opções:
-
Use a opção
-idebashpara quebashse comporte como um shell interativo e leia o arquivo~/.bashrc:/usr/bin/sudo -H -u <user> /bin/bash -i -c '<command>' -
Como você estava usando a opção
-l, que diz abashpara se comportar como um shell de login, você pode colocarPATHem~/.profilepara que sejasource-ed. Observe que isso pode não ser uma boa opção, considerando sua necessidade. -
Outra opção muito ruim seria colocar
PATHno início do arquivo~/.bashrc, antes do snippet de verificação de interatividade.