su -c "echo $hi" bela
expande para as palavras su
, -c
, echo
e bela
. Como a variável hi
não está definida no seu shell atual, sua expansão está vazia. O comando que é executado como usuário bela
é echo
.
Correção: su -c 'echo $hi' bela
, com as aspas simples protegendo o $
da expansão ... Não. O arquivo .bashrc
é lido apenas por shells interativos. Quando você executa su -c 'echo $hi' bela
, isso executa echo $hi
como usuário bela
. Mas como nada está definindo a variável hi
, o comando echo $hi
se expande para echo
, o que ainda não imprime nada.