Thanks osprey. I now have usbutils installed in both Arch machines. But that wasn't really what I was asking.
Apparently, I assumed that, whether I use Debian, Fedora, Arch, or any other distro, as long as it's a Linux based operating system, the available commands for the terminal were the same set. That is, the same command set is available to use as soon as the OS is installed as it's part of the system, no matter the distro.
For example, I've now rummaged around in Ubuntu systems. Ubuntu, Kubuntu, Mint, etc. I've also wandered around Fedora, Debian and now Arch.
In every case, as soon as I install the OS, I can boot up, and without installing anything else, open terminal and type commands such as ls, cp, mkdir, reboot, shutdown, etc. Now I have found that, while in all the others, lsusb works the same, in Arch, it isn't included in the command set.
So, my questions are, what other commands are missing from a basic Arch install that are included in all the others? And where do I find them?
Nowhere have I read anything about bash commands being separated into differing packages like this. I thought Bash was Bash. Period.
Does my question make sense?
Certainly your question makes sense to me. In the following, whether any light is thrown on the matter, you can say.
The idea of a "command set" is an interesting one. The reality is that different distros supply different packages which contain the commands, and since it's a matter of choice by the maintainers as to what goes into their distribution, it's really going to be a matter for the user to discover what's available. That being said, there are some "basic" packages which the major distros always tend to include by default.
One basic package is: coreutils, which includes over 100 executables. They can be viewed in a terminal with commands like:
Code:
apt-file list coreutils | sed -n '/\usr\/bin/p'
apt-file list coreutils | sed -n '/\usr\/sbin/p'
In this post the apt commands are being used for the debian based distros, so one may need to translate them into the equivalent commands for arch or fedora to see similar results in those distros.
Another commonly included package is util-linux, which includes over 45 executables that can be viewed with commands like:
Code:
apt-file list util-linux | sed -n '/\usr\/bin/p'
apt-file list util-linux | sed -n '/\usr\/sbin/p'
The use of the lexical item "util", is commonly used in the name of packages that contain "utilities", which refers basically to useful commands, or commands that can be usefully "utilised" in linux I guess. To see all the packages which includes such "utilisable" commands, one can run a command like the following, which will output a list of the packages with "util" in their name. Then one can inspect each package with a relevant command such as those above used for the coreutils and util-linux packages to view the executables they include :
Code:
apt list --installed | grep util
The selection of "util" packages in any distro's installation medium, will depend, as mentioned above, on the decisions of the maintainers. If a util package is not included, I guess it's assumed that it can be downloaded, such as the lsusb package mentioned in post #2, so that sort of covers the bases for the maintainers and absolves them to an extent of critiques.
There are other approaches to the above arrangement of utilities, one of which is used by the Alpine distro. Alpine uses a single executable called: busybox, which has about 308 commands all bunched into a single file. The executables included can be checked here:
https://busybox.net/downloads/BusyBox.html.
It's a distro designed to be small, but has the flexibility of being enlarged into a fully featured distro, or used for small embedded systems.
All in all, the "command set" chosen by the distro's maintainers will each have a justification which is often aired and discussed on the mailing lists of the respective distros which are usually available for users to view, as is normally the case in the free and open source world.
In relation to bash, briefly, it is its own package and is only one of a number of possible shells like csh, ksh, zsh etc. It's an executable which has the specific function of "sending" the user's requests of the other executables into the kernel's domain, or space, so that the kernel can execute a command's intention on the hardware, and return the result to the user. Without a shell, like bash, a user would have no functionality on the machine. So, all normal distros provide a shell of one sort or another.