Используйте $SUDO_USER
(если вы настаиваете на использовании $USER
напрямую, установите его значение, как показано):
$ cat script.sh
#!/bin/bash
if [ "$SUDO_USER" != "" ]; then
USER=$SUDO_USER;
fi
export PATH=$PATH:/home/$USER/somedir
Или обмануть, используя $USER
в качестве первого параметра для скрипта (проверка ошибок - упражнение для читателя):
$ cat script.sh
#!/bin/bash
USER=$1
export PATH=$PATH:/home/$USER/somedir
Тогда:
$ sudo ./script.sh $USER
Или используйте $HOME
, как предложено Крисом Джестер-Янгом. Вы можете использовать bash для удаления префикса "/ home /", но это будет уродливым хаком.