Запустите терминал при запуске и выполните команду как sudo - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь запустить исполняемый файл как sudo, используя терминал при запуске, но у меня возникли некоторые проблемы.Я не мог найти решение в других ответах, поэтому я открыл этот.Я использую Raspberry Pi 3 B + с Raspbian Stretch с рабочим столом и рекомендуемое программное обеспечение, загруженное с официального сайта Raspberry Pi.

У меня есть исполняемый файл, который необходимо запустить с помощью sudo (я использую библиотеку pigpio длясвязываться с другим оборудованием через SPI, и если я не запускаю исполняемый файл с помощью sudo, pigpio не работает).Я пытаюсь добиться того, чтобы, когда Pi заканчивает запуск графического интерфейса, он запускал LXTerminal и выполнял «sudo home / pi / myfolder / myprogram».

Я пытался:

sudo nano ~/.config/autostart/myprogram.desktop

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=myprogram
Exec=lxterminal -e "sudo /home/pi/myfolder/myprogram"
Terminal=true

sudo chmod a+r ~/.config/autostart/myprogram.desktop

Также пробовал:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

lxterminal --command="sudo /home/pi/myfolder/myprogram"

Оба метода открывали lxterminal при запуске, но не выполняли мою программу.Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 06 июня 2019

Я нашел решение, поэтому я опубликую его здесь на случай, если кому-то еще это понадобится.Если он уже существует где-то еще здесь, не стесняйтесь пометить его как дублированный.Решение, которое сработало для меня, было следующим:

sudo nano ~/.config/autostart/myprogram.desktop

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=myprogram
Exec=lxterminal -e bash -c 'sudo /home/pi/myfolder/myprogram;$SHELL'
Terminal=true

sudo chmod a+r ~/.config/autostart/myprogram.desktop

$ SHELL заставляет терминал оставаться открытым после того, как myprogram заканчивает свое выполнение.Если вам не нужна эта функция, просто исключите часть кода $ SHELL из приведенного выше кода.

...