Making items added to paths via paths.d show up everywhere under Mavericks
Option 1: just use /etc/launchd.conf

Add a line like

setenv PATH /Users/username/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin


to /etc/launchd.conf and restart to apply the changes.

The default path is /usr/bin:/bin:/usr/sbin:/sbin.

/etc/launchd.conf applies to all processes, which includes graphical applications, non-login shells, and programs started by launchd jobs.

Edit /etc/launchd.conf manually if you see that some program or installer has added new paths to /etc/paths or /etc/paths.d/*.

Option 2: use a launchd job to set the path during startup

Save this plist as /Library/LaunchDaemons/setpath.plist:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
  &lt;key&gt;Label&lt;/key&gt;
  &lt;string&gt;setpath&lt;/string&gt;
  &lt;key&gt;ProgramArguments&lt;/key&gt;
  &lt;array&gt;
    &lt;string&gt;bash&lt;/string&gt;
    &lt;string&gt;-c&lt;/string&gt;
    &lt;string&gt;launchctl setenv PATH "$((launchctl getenv PATH|tr : \\n
    cat /etc/paths /etc/paths.d/*)|awk '!a[$0]++'|paste -sd: -)"&lt;/string&gt;
  &lt;/array&gt;
  &lt;key&gt;RunAtLoad&lt;/key&gt;
  &lt;true/&gt;
&lt;/dict&gt;
&lt;/plist&gt;


The program should be run the next time you restart. It changes the PATH of the root launchd process, which is inherited by the user launchd process.

In my opinion it's easier to just edit /etc/launchd.conf though.

Option 3: make bash run path_helper even for non-login shells

path_helper is run from /etc/profile, /etc/zshenv, and /etc/csh.login. zsh reads /etc/zshenv even for non-login shells but bash does not read /etc/profile for non-login shells.

This makes bash run path_helper for interactive non-login shells and for non-interactive non-login shells:

echo 'eval $(/usr/libexec/path_helper -s)'&gt;&gt;~/.bashrc
setenv BASH_ENV /etc/profile|sudo tee -a /etc/launchd.conf


It does not make bash run path_helper for non-interactive non-login shells invoked as sh. It also does not affect graphical applications or processes that are not started from shells.