The proper way would be to set up a systemd service object for each command chunk in your rc.local file and not use rc.local at all as it’s a legacy method and should really only be used for compatibility.
For example, see this section in the imwheel wiki entry:
archwiki suggesting to run the systems service as user, what is almost the same as using profile way.
But systems service will work independent, so it will work in any case.
create the service file inside users path: nano ~/.config/systemd/user/imwheel.service
enable service as user! systemctl --user enable imwheel.service
No - don’t use a deprecated approach. Instead, use the correct approach for the distro.
You’re trying to achieve an outcome from this, but instead of asking how best to do that you’re asking about something different. This is an XY Problem.
I have got so many different scripts I want to launch upon startup, is there a way I can do this instead of having to create each individual *.service, maybe perhaps I create a shell script and I create one *.service script and it points to the shell script to launch upon startup? Is that possible?
And if it is then is it possible for the shell script to launch in silence meaning that it doesn’t open up some terminal window?
Can you tell us exactly what requires elevation? The most likely solution is to split it into 2 services. One with all the things that should be done as root and another with all the things that should be run as your user but without knowing the specifics it is hard to recommend the correct approach.
This should probably be done in a normal service run as root, not a user service. It can also be rewritten as a single command, you don’t need a script for this.
This should be a separate service. There is a fully built service file here.
This should be an autostart script as @Kresimir suggested.