Вы пытаетесь изменить содержимое /opt/Folder
на ваш собственный userid, не так ли.
Вот ваша команда еще раз:
sudo chown -R $USER:$USER /opt/Folder
Это работает из командной строки, потому что переменная $USER
оценивается до выполнения команды, и поэтому она выполняется в таком виде (предполагая, что ваше имя пользователя george
):
sudo chown -R george:george /opt/Folder
С другой стороны, когда вы выполняете команду с sudo
, помимо всего прочего, переменная $USER
принимает значение целевого пользователя, которым в данном случае является root
. Таким образом, выполняя sudo bash mysetup.sh
, вы запускаете mysetup. sh
от имени root, поэтому команда выполняется с $USER
, установленным в root
, и оценивается следующим образом
sudo chown -R root:root /opt/Folder
Решение в вашем случае - избегать запуска всего скрипта под sudo
, и позволить скрипту использовать sudo
там, где это необходимо для запуска определенных команд с повышенными привилегиями. Другими словами, используйте bash mysetup.sh
вместо sudo bash mysetup.sh
.