$HOME
e ~
são expandidos pelo seu shell, eles não são interpretados por echo
.
Em outras palavras, echo
não vê $HOME
como argumento. Na verdade, ele vê /home/nbest
. Portanto, os seguintes comandos são exatamente idênticos (no seu caso):
nbest@geo:~$ sudo -H -u tanum echo $HOME
nbest@geo:~$ sudo -H -u tanum echo /home/nbest
Não importa o que você tente ( -H
, -i
, ...) você nunca obterá o comportamento desejado. Porque $HOME
é substituído pelo seu shell e seu shell é executado como seu usuário. sudo
não afeta seu shell de alguma forma.
Para contornar esse 'problema' (que, na verdade, é um recurso), você pode iniciar um novo subshell:
nbest@geo:~$ sudo -H -u tanum sh -c 'echo $HOME'
(Note que estou usando aspas simples para evitar a expansão). Dessa forma, o novo shell sh
será executado como usuário tanum e imprimirá seu diretório pessoal.
Outra alternativa é usar ~username
, que é expandido para a página inicial desse usuário, sem a necessidade de usar sudo
ou su
. Experimente:
nbest@geo:~$ echo ~tanum