Tente:
sudo -u <user> -H -- bash -l
O argumento sudo "-H" irá definir o diretório home corretamente, e a opção "-l" para o bash indicará que este é um shell de login. Você também pode experimentar adicionar o argumento bash "-p".
Estou gerenciando um servidor CentOS 4.7 com várias contas de usuário sem shell, por motivos de segurança. Mas às vezes eu preciso de um shell de usuário para instalações de qualquer maneira. Qual é a melhor maneira de obter um shell de login? Agora eu uso
sudo –u <user> bash –rcfile /home/<user>/.bash_profile
Mas isso não é perfeito. Muitas das variáveis de ambiente não são inicializadas.
Erich