They could have been two commands that call a single parent command with different options. For example, imagine if cat had an option -N to restrict the number of lines that was printed, and also an option -t to start from the end. head would just proxy to cat -N and tail would proxy to cat -N -t. Combining the three into a single implementation reduces total LoC and opportunity for bugs. Also reduces total maintenance burden.
I believe busybox is like this actually - a ton of Unix commands in a single package. It’s used by Alpine Linux, a tiny and performance linux distro commonly used by docker containers.
Some quick research says that it is indeed a re-implementation. The first line of the wikipedia, says:
BusyBox is an implementation of many Unix commands in a single executable file.
You can download the source code yourself to verify. And if you’ve actually used Alpine Linux before you would have also noticed that the commands provided by busybox have only a subset of the options provided by their GNU coreutils counterparts.
Please do your research before so confidently correcting other people.
They could have been two commands that call a single parent command with different options. For example, imagine if
cathad an option-Nto restrict the number of lines that was printed, and also an option-tto start from the end.headwould just proxy tocat -Nand tail would proxy tocat -N -t. Combining the three into a single implementation reduces total LoC and opportunity for bugs. Also reduces total maintenance burden.I believe
busyboxis like this actually - a ton of Unix commands in a single package. It’s used by Alpine Linux, a tiny and performance linux distro commonly used by docker containers.Busybox is literally just a bundle. That’s its whole purpose. It doesn’t reimplement anything.
Some quick research says that it is indeed a re-implementation. The first line of the wikipedia, says:
You can download the source code yourself to verify. And if you’ve actually used Alpine Linux before you would have also noticed that the commands provided by busybox have only a subset of the options provided by their GNU coreutils counterparts.
Please do your research before so confidently correcting other people.