Why do we need the reboot function in different binaries?
Or do they differ in something?
We don't necessarily need them both, but we have them both because of the history of Unix, and its multiplicity of versions.
From their respective man pages:
shutdown is more general-purpose, and more powerful, while reboot is friendlier and easier to remember.
shutdown allows you to specify a temporal argument (to restart in 5 minutes, for instance) and allows you to do many things besides reboot, including:
However, if you just want to reboot the system now, it's easier to type
The two commands do something different, however they can end up calling each other, which is why they seem to do the same thing!
In addition to what iconoclast wrote, there's an important distinction between the two programs:
Why does this matter, you ask? I will tell you.