Apple - How is my $PATH variable built on macOS?

The INVOCATION section of the bash man page says

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.

Of particular interest is /etc/profile, which uses path_helper to build a path from what it finds in /etc/paths and /etc/paths.d/*.


If you fix the typo in your PATH assignment and replace usr/local/bin with /usr/local/bin Homebrew should stop complaining.

The other stuff (/opt/local/...) is definitively added somewhere later during shell initialization (meaning after source ~/.bashrc or after . ~/bin/dotfiles/bash/env). You will have to look through the different files (or grep for /opt/local or PATH.*PATH) to see where it happens (and why).

Tags:

Macos

Bash

Path