Во втором примере переменная $USER
раскрывается до выполнения su
. Это можно предотвратить, указав EOF
.
su other_user <<'EOF'
echo Current user: $USER
EOF
Или вы можете выполнить скрипт для его выполнения в корневой оболочке, также используя здесь-doc:
su other_user <<END
bash user.sh
END
или вы можете использовать опцию -c
для su
:
su other_user -c 'bash user.sh'