Appendix B. Understanding $PATH and Installing Command-Line Programs

PATH is an environment variable that defines the directories that will be searched for a given command. That is, if I type foo and there’s no built-in command, shell function, command alias, or program anywhere in my PATH that the shell can execute as foo, I’ll be told this command cannot be found:

$ foo
-bash: foo: command not found

In Windows PowerShell, I can inspect the PATH with echo $env:Path, whereas on Unix platforms I use the command echo $PATH. Both paths are printed as a long string with no spaces, listing all the directory names separated by semicolons on Windows or by colons on Unix. If the operating system didn’t have some concept of a path, it would have to search every directory on the machine for a given command. This could take minutes to hours, so it makes sense to restrict the searching to just a few directories.

Following is my path on my Macintosh. Note that I have to put a dollar sign ($) in front of the name to tell my shell (bash) that this is a variable and not the literal string PATH. To make this more readable, I’ll use Perl to replace the colons with newlines. Note that this command will only work on a Unix command line where Perl is installed:

$ echo $PATH | perl -pe 's/:/\n/g' 1
/Users/kyclark/.local/bin 
/Library/Frameworks/Python.framework/Versions/3.9/bin  /usr/local/bin ...

Get Mastering Python for Bioinformatics now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.