Так как Вы работаете su -
, Вы говорите su
выполнять оболочку входа в систему. Оболочка входа в систему, проигнорированная -c
аргумент и чтения управляют в интерактивном режиме вместо этого. Решение не состоит в том, чтобы передать -
.
Если Вы хотите считать файл запуска целевого пользователя, сделайте это явно.
su - USER1 <<EOF
date
if [ -e ~/.profile ]; then . ~/.profile; fi
…
EOF 2>&1 | tee -a -- "$LOG"
Это означает, что это имя зарезервировано системой. Это означает, что оно зарезервировано для реализации.
Как упоминалось в Code_cynic, двойное подчеркивание означает, что это зарезервировано (то же самое для ключевых слов с одним подчеркиванием, за которым следует заглавная буква): {{1} } https://stackoverflow.com/a/10687114/2915175
Здесь можно найти объяснение макроса __ init
, который расширяется до атрибута __ __
: { {1}} https://stackoverflow.com/a/8832166/2915175