Я предполагаю, но это может быть то, что вам нужно:
echo "give name of directory: "
read directory
if [ -d "$directory" ]
then
echo "thanks again"
else
exit
fi
find $directory -type f
Вы find
просматривали /, корневой каталог.
Существуют более сложные версии xhost +
, а именно xhost +si:localuser:root
, которая добавляет в список разрешенных подключений только локального пользователя root.
Вам нужно найти, куда поместить эту команду, чтобы она запускалась при входе в систему, в зависимости от вашего дистрибутива. Найдите в /etc/X11/
существующий файл, уже использующий xhost
. На моем пи я нашел это в/etc/X11/Xsession.d/35x11-common_xhost-local
:
if type xhost >/dev/null 2>&1; then
xhost +si:localuser:$(id -un) || :
fi
В другой системе это было в /etc/X11/xinit/xinitrc.d/localuser.sh
.
Добавьте это в сценарий установки:
sudo mkdir /opt/xauthorityfix
sudo chmod 777 /opt/xauthorityfix
echo "#!/bin/sh" > /opt/xauthorityfix/setxauthority.sh
echo "export XAUTHORITY=$XAUTHORITY" >> /opt/xauthorityfix/setxauthority.sh
sudo chmod 755 /opt/xauthorityfix
После этого оберните ваш скрипт Python в этот скрипт оболочки:
#!/bin/sh
source /opt/xauthorityfix/setxauthority.sh
/usr/bin/python3 /usr/sbin/test_graphic_app.py
И вместо этого пусть служба systemd запустит этот сценарий!
Просто убедитесь, что переменная среды XAUTHORITY задана при запуске сценария установки. Вы можете сделать это, не запуская его с помощью sudo или используя sudo -E
.
По сути, это хранит переменную среды XAUTHORITY в том виде, в каком она есть при запуске скрипта установки, что позволяет вам легко обращаться к ней позже.