Right way to add paths to PATH in mojave
I'm not clear how to add permanently paths to the PATH env var. I've found several questions for this each time with a different answers.
I created a .bash_profile
in my home dir, but each time I reboot I have to manualy export
my paths again.
source ~/.bash_profile
doesn't even work.
What am I missing?
This is currently my .bash_profile
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
export PATH="/usr/local/opt/openssl/bin:$PATH"
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
Solution 1:
What you've laid out is the proper way to add additional directories to your user's $PATH
.
Step 1 - ~/.bash_profile
To start make edits to your ~/.bash_profile
adding whatever locations you'd like to have amended to your $PATH
.
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
export PATH="/usr/local/opt/openssl/bin:$PATH"
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
Step 2 - source ~/.bash_profile
After making the above edits to this file you can either use the source
command or the .
notation to "reload" and changes made to this file in your current shell's context.
$ . ~/.bash_profile
-or-
$ source ~/.bash_profile
Step 3 - Evaluate changes
After making the edits and sourcing them you can confirm they had the effect you desired by echoing the contents of the $PATH
varible.
$ echo $PATH | tr ':' '\n'
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/opt/X11/bin
/Applications/Wireshark.app/Contents/MacOS
/usr/local/sbin
/Users/smingolelli/bin
/usr/local/opt/go/libexec/bin
/Applications/Visual Studio Code.app/Contents/Resources/app/bin
/Users/smingolelli/projects/kubebuilder/kubebuilder_1.0.5_darwin_amd64/bin/
The order matters, so directories that occur first will be searched first. If a binary lives in multiple places, the first place encountered will be the one that is used.
Also keep in mind that multiple sourcings of this file will have a negative effect of continuing to add the same changes, so it's often the case that you'll want to completely se the $PATH
to a consistent known initial state and then amend it with these types of commands:
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin"
export PATH="/some/new/dir:$PATH"
Using path_helper
macOS also includes a helper to assistance in the management of your $PATH
. It's located here /usr/libexec/path_helper
.
So instead of manually crafting your base $PATH
as mentioned above you can instead use this snippet to get a known good starting point for your $PATH
.
[ -x /usr/libexec/path_helper ] && eval $(/usr/libexec/path_helper -s)
This will take care to initialize $PATH
so any directories listed in /etc/paths
and /etc/paths.d/
get added automatically.