Это потому, что во втором примере переменная $ HOME
расширяется до того, как оболочка выполнит команду, поэтому на самом деле вы выполняете
sudo su - user2 -c "echo /home/user1"
, поскольку это значение переменной $ HOME
имеет на данный момент.
(я также предполагаю, что вывод второй команды на самом деле не $ HOME = / home / user1
, а просто / home / user1
).
Вы можете предотвратить расширение переменных в первой оболочке, если используете одинарные кавычки:
$ sudo su - user2 -c 'echo $HOME'
/home/user2