You can use a systemd Unit file to start your script. With it you are able to exactly set the environment to that one used on the command line. The only difficulty is to find the environment needed for your programs. I suggest to start with this Unit file:
rpi ~$ sudo systemctl --full --force edit myrun.service
In the empty editor insert these statements, save them an quit the editor:
[Unit]
Description=My run script
After=multi-user.target
[Service]
User=pi
WorkingDirectory=/path/to/scripts
Environment="ENV_VAR=important variable"
ExecStart=/path/to/run.sh
[Install]
WantedBy=multi-user.target
You may have a look at man systemd.exec to see what's possible with environment. It is also important, what output your scripts have, if it is text only or graphical. We will see. Enable the service with:
rpi ~$ sudo systemctl enable myrun.service
and reboot.
Here some commands for troubleshooting:
rpi ~$ sudo systemctl --full edit myrun.service # edit again
rpi ~$ systemctl status myrun.service # get status of the service
rpi ~$ journalctl -b -e # looking at the journal for all logs