Bash: копия в домашний каталог

Сценарий Bash используется для копирования файла в каталог запуска. Он работает нормально, когда имя пользователя (Ashok) явно дано:

#!/bin/sh
sudo cp /usr/share/applications/syncthing-start.desktop /home/ashok/.config/autostart

Так как скрипт предназначен для нескольких пользователей, я пытался изменить код, чтобы имя пользователя не было дано, как это:

#!/bin/sh
sudo cp /usr/share/applications/syncthing-start.desktop /home/$USER/.config/autostart

в Позже случай, сценарий показывает ошибку:

cp: failed to access '/home/root/.config/autostart': Not a directory.

Кто-нибудь знает обходной путь?

0
задан 11 March 2021 в 00:05

3 ответа

Проблема может быть решена с использованием $ sudo_user вместо $ user. Полный скрипт тогда был бы:

#!/bin/sh
sudo cp /usr/share/applications/syncthing-start.desktop /home/$SUDO_USER/.config/autostart
0
ответ дан 18 March 2021 в 23:27

Поскольку OP хочет домой пользователя, который выполнил скрипт, он должен включать в себя:

if [ "$EUID" -ne 0 ] ; then
  echo "Sorry, but you are not root. Use sudo to run"
  exit 1
fi

, применение пользователя использовать «sudo» $ user_sudo должен сделать именно то, что op хотел достичь.

1
ответ дан 18 March 2021 в 23:27

Для того, чтобы иметь глобальный автозапуск , необходимо скопировать этот файл в /etc/xdg/autostart следующей командой:

sudo cp /usr/share/applications/syncthing-start.desktop /etc/xdg/autostart/

и перезагрузить.

2
ответ дан 18 March 2021 в 23:27

Другие вопросы по тегам:

Похожие вопросы: