Rabi Siddique
309 words
2 minutes
type Command is Handy

The type command in Linux is used to determine how a given command name would be interpreted by the shell. It identifies whether the command is an alias, a shell built-in, a function, or an executable in the system’s path.

The -a flag lists all the possible interpretations of the command, including aliases, shell built-ins, functions, and the paths to the executables in the system.

type -a command_name

I found it very useful in a task I was working.

I needed to use Agoric commands on my computer. To make it easy, I cloned the Agoric SDK and added paths to the relevant binaries in the system variable PATH. This allowed me to run Agoric commands from anywhere in the terminal without needing to specify the full path each time.

I wrote some end-to-end tests that needed to use Agoric commands. I assumed that since I had set up the PATH correctly, the tests would use the Agoric commands from the PATH variable.

When I ran the tests, they didn’t behave as expected. I was puzzled because the same commands worked fine when I ran them directly in the terminal but not in the tests.

To understand what was going wrong, I added a test that used the command type -a some_agoric_command. This showed all the locations where the some_agoric_command can be found on my system. The output revealed that the command used by the tests was coming from a node_modules folder, rather than the directory I had specified in my PATH. This mismatch was causing the inconsistent behavior.

To fix the issue, I updated my tests to use the full path to the Agoric commands. Instead of relying on the PATH variable, I specified the exact location of the command in my tests. For example, if the full path to the command was /usr/local/bin/some_agoric_command, I changed my test to use /usr/local/bin/some_agoric_command directly.

Further Reading#

type Command is Handy
https://rabisiddique.com/posts/type-command/
Author
Rabi Siddique
Published at
2024-05-28