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
-i
debash
para quebash
se 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 abash
para se comportar como um shell de login, você pode colocarPATH
em~/.profile
para que sejasource
-ed. Observe que isso pode não ser uma boa opção, considerando sua necessidade. -
Outra opção muito ruim seria colocar
PATH
no início do arquivo~/.bashrc
, antes do snippet de verificação de interatividade.