sudo -u пользователь bash работает, но $ HOME соответственно не меняется

Я пишу скрипт для установки новой установки Debian. Проблема в этом коде:

if [ ! -z "$USER1" ] then sudo -u "$USER1" bash <> "$HOME"/.bashrc . "$HOME"/.bashrc echo "Here is LS_COLORS in action: " ls -l "$HOME"/ EOF 

ПРОБЛЕМА:

Когда я выполняю sudo для другого пользователя, переменная $ HOME не показывает / не изменяет домашний каталог этого нового пользователя.

ВОПРОСЫ :

Можете ли вы объяснить мне проблему?

Как бы я сделал это наилучшим и эффективным способом?

Редактировать:

Почему я продолжаю получать « cp: cannot stat '': No such file or directory » или « cp: missing opereand » в моей команде cp? Я думаю, это как-то связано с $ HOME ……….

Содержимое here-doc оценивается ДО sudo . Это означает, что каждый экземпляр $HOME находится в контексте вызывающей стороны, а не в sudo . Вы можете увидеть это в действии здесь:

 A=apple bash <<-EOF A=banana echo "$A" EOF 

Выход

 apple 

Если вы указываете свой маркер EOF его содержимое будет указано соответственно:

 A=apple bash <<-'EOF' A=banana echo "$A" EOF 

Выход

 banana