PATH is a system-level variable that holds a list of directories. When you enter a command in the terminal, it’s shorthand for a program with the same name. The system looks in each of the PATH directories for the program corresponding to the command. When it finds a matching program, it runs it. If it doesn’t find a match, it raises an error.
To see the PATH on your system, open the terminal window and enter this command (where zsh$ represents the terminal prompt, which will be different on your system):
1 | zsh$ echo $PATH |
Type return to complete the command. The result will be a list of directories separated by : that looks like this:
1 | /usr/bin:/bin:/usr/sbin:/usr/local/bin |
The exact list may be different on your system. Now try the which command, which shows us the full path corresponding to a another command:
1 2 | zsh$ which whoami /usr/bin/whoami |
This tells us that the whoami command (which prints your username to the terminal) actually invokes the program located at /usr/bin/whoami. The terminal finds this program by looking for whoami in each of the PATH directories, one of which is /usr/bin.
We can always invoke a command by using its full path rather than the shorthand:
1 | zsh$ /usr/bin/whoami |
In this case, the terminal doesn’t look in the PATH directories for whoami, because we’ve already provided a full path to whoami.
If we enter a command name that doesn’t exist in any PATH directory, we get an error:
1 2 | zsh$ racket zsh: command not found: racket |
Our goal is to add the directory containing racket to our PATH. Then the terminal will be able to find it.
First, check that your Racket installation works by going into your new Racket directory and launching DrRacket. If DrRacket works, then your Racket installation is sound.
Next, check that you know the full path to the bin subdirectory of your new Racket directory. If you put this directory in Applications as recommended, the path will be:
1 | /Applications/Racket v8.15/bin |
If you installed or moved it elsewhere, the path will be different. For instance, it can be convenient to remove the version number from the name of Racket’s installation directory, like so:
1 | /Applications/Racket/bin |
This way, you can update Racket in the future without changing the rest of the configuration below.
Either way, we’ll refer to this Racket path as /YOUR/PATH/TO/bin. So when you see /YOUR/PATH/TO/bin in commands below, substitute your actual path to the Racket bin subdirectory.
You can test this path from the terminal: append /racket to the path and enter it as a command. This should start Racket (include the surrounding double quotes around the whole thing):
1 2 3 | zsh$ "/YOUR/PATH/TO/bin/racket" Welcome to Racket v.8.15. > |
If this doesn’t work, either the path to Racket is mistyped, or there’s an error in your Racket installation.
If it does work, type ctrl+D or (exit) to quit Racket. Next, you need to add this path to the "/etc/paths.d" directory on your system, which affects the system PATH variable. You can do this with the following one-line terminal command, which will ask you for your password (again, substitute /YOUR/PATH/TO/bin with your actual path, and include the surrounding double quotes):
1 | zsh$ sudo sh -c 'echo "/YOUR/PATH/TO/bin" >> /etc/paths.d/racket' |
This command puts the path to Racket in a new file called /etc/paths.d/racket, which will be automatically loaded in the future.
To check that your PATH has been updated correctly, open a new terminal window and try echo $PATH again:
1 2 | zsh$ echo $PATH /usr/bin:/bin:/usr/sbin:/usr/local/bin:/YOUR/PATH/TO/bin |
This time, you should see your Racket bin subdirectory at the end of the PATH list of directories.
If so, you can now try which racket:
1 2 | zsh$ which racket /YOUR/PATH/TO/bin/racket |
If that works, then you’re home free. Type racket and you should see something like this:
1 2 3 | zsh$ racket Welcome to Racket v.8.15. > |
If so, all is well. The > is the command prompt for Racket. Type ctrl+D or (exit) to quit Racket.