Differences how to run scripts at startup
I've read various questions about how to run script at startup
but I'm not quite sure what the differences are and what's the actually the right way to do it without GUI.
/etc/rc.local
- cron job using
@reboot
~/.profile
/.bash_profile
/.bash_login
Examples I need to run at startup
apt-get update
- set some permissions
- set display brightness
- turn numlock on
- setup touchpad
- run some apps
- run some scripts as root (should I call them with
sudo
even if main script is already executed as a root?) - run some scripts without root
It would be nice to has a single one script that handles all these things in the one file. How to do it properly?
~/.profile
, /.bash_profile
, and /.bash_login
are better for defining the environment variables and setting up the environment, than for running scripts. I would not recommend these.
/etc/rc.local
can be used for that, but remember that it will start before GUI starts . Unless it is for a script that only sends notification to GUI. Note that you will need to call your script from /etc/rc.local
in format /full/path/to/script &
(&
to avoid blocking other scripts you may have there from execution). You will also need export DISPLAY=:0
variable in either the script itself or within /etc/rc.local
. Apps that need GUI will need this variable to exist. Same idea with cron job using @reboot
.
If you want to run scripts at GUI login, the proper way is to create .desktop
file for each script in your ~/.config/autostart/
folder. You can do it by hand, or use Startup Applications app that does exactly the same thing for you. Just open the Unity Dash and type in "Startup Applications"
Overview of your examples
-
apt-get update
doesn't need GUI , just network./etc/rc.local
is ok for this one. -
set some permissions
, this doesn't need GUI too, just use/etc/rc.local
-
set display brightness
doesn't need GUI too , but may need root privillege. If you want to change it before login , you will need to write to a special file. Consult my other post on this subject -
turn numlock on
may not need GUI,too -
setup touchpad
depending on your method, may or may not need GUI -
run some apps
if they are GUI apps, they will need to be started from Startup Applications I described above. -
run some scripts as root
you can use/etc/rc.local
orcron
for these. Running GUI apps as root is bad idea for many reasons, so please avoid that. -
run some scripts without root
use the Startup Applications method.