Como uma solução geral, você pode passar variáveis de ambiente adicionais para um comando sudo usando possivelmente vários pares VAR=value
na linha de comando a ser executada.
Neste caso específico, para passar a variável $user
, você pode usar:
sudo -i -u "$user" user="$user" bash <<'EOF'
...
chown $user:$user "$HOME"/.bashrc
...
EOF
(Você também pode passar variáveis como $CURRENTDIR
usando este método ao invés de empurrar isso através do rcfiles, já que parece que você está fazendo isso do resto do script.)
Você precisa de algumas permissões específicas para sudo
para permitir que você defina variáveis de ambiente adicionais. Como esta seção da página do sudo afirma:
If the setenv option is set in sudoers, the command to be run has the
SETENV
tag set or the command matched isALL
, the user may set variables that would overwise be forbidden. See sudoers(5) for more information.