Many of us, Mac users, have probably found ourselves in this situation: something annoying or unnecessary starts at system load on a Mac and we want it to just stop. Unfortunately, there’re a whole bunch of ways this can happen so hunting the culprit down can be a challenge.

Below you can find listed various ways something can launch on startup, in OS-X. If you know any other way: please post in the comments.

So, here we go:

Unix Startup Scripts

  1. /etc/profile - for all users
  2. /Users/$USER/.bash_profile - only for current user

Launchd Scripts

  1. /Library/LaunchDaemons - for all users, runs as root.
  2. /System/Library/LaunchDaemons - for all users, runs as root.
  3. /Library/LaunchAgents - for all users
  4. /System/Library/LaunchAgents - for all users
  5. /Users/$USER/Library/LaunchAgents - for current users only

CAUTION: OS-X stashes essential utilities in /System/Library/LaunchDaemons and /System/Library/LaunchAgents so make sure you know what you are doing, before altering them.

Helpful utility:

> launchctl list 

Startup Items

  1. /Library/StartupItems
  2. /System/Library/StartupItems

Login Items

System Preferences > Users & Groups > [specific user] > Login Items

Login Items Screenshot

A Cron Job

While cron jobs don’t run on startup, they are a way to make sure some app or service gets to run without an explicit start.

  1. crontab -l - for current user
  2. sudo crontab -l -u root - for all users, run as root

Modifying:

  1. crontab -e - as current user
  2. sudo crontab -e -u root - as root

Login Scripts

Login Scripts are deprecated, but some old or malicious apps may still be able to exploit this method.

Kernel Extensions

No user application should ever need to use this method, but somebody could run some code as a Kernel Extension. Fair warning: messing with these is extremely dangerous and you should definitely know what you are doing.