Então (com base nos comentários) você deseja que .bashrc
se refira a um arquivo no diretório do qual sudo
é invocado; mas $HOME
para expandir para o diretório inicial do usuário de destino. Eu acho que a maneira de fazer isso é usar -H
:
-H, --set-home Request that the security policy set the HOME environment variable to the home directory specified by the target user's password database entry. Depending on the policy, this may be the default behavior.
Para ilustrar:
$ sudo -Hu testuser bash -c 'echo \$PWD = $PWD; echo \$HOME = $HOME'
$PWD = /home/steeldriver/forums/tests
$HOME = /home/testuser
Considerando que com "regular" sudo
$HOME
resolve para o usuário que faz a chamada
$ sudo -u testuser bash -c 'echo \$PWD = $PWD; echo \$HOME = $HOME'
$PWD = /home/steeldriver/forums/tests
$HOME = /home/steeldriver
enquanto com um shell de login $HOME
resolve o do usuário de destino - mas o diretório de trabalho também é alterado:
$ sudo -iu testuser bash -c 'echo \$PWD = $PWD; echo \$HOME = $HOME'
/home/testuser = /home/testuser
/home/testuser = /home/testuser
nenhum dos quais é muito útil em sua aplicação.
Tenha em mente que sudo
é bastante configurável e o comportamento padrão pode ser diferente dependendo do seu sabor e distribuição precisos do Unix / Linux.