[OS X TeX] Leopard MacTeX PATH problems, still

Anthony Morton amorton at fastmail.fm
Sun Mar 23 00:31:16 EDT 2008

> The /usr/libexec/path_helper utility is itself a shell script that  
> takes care of parsing /etc/paths.d/; one interesting thing to note  
> is that any paths in the text file /etc/paths will get processed  
> ahead of the remaining paths.
> So if there is anything in that file that might cause trouble by  
> coming first, then you must either chance editing (and remembering) / 
> etc/paths, or else you must shortcut the default behavior by having  
> your system-wide shell file NOT call path_helper, and then call it  
> manually AFTER you have set the other paths first.

It's more subtle even than that.  Anything that's in the shell's  
initial PATH before path_helper is called (eg. from /etc/profile) will  
always appear first, regardless of the order in /etc/paths.

In practice this means that /usr/bin, /bin, /usr/sbin and /sbin will  
always come first in a Leopard PATH, unless a script alters PATH  

This means that if you install your own version of an Apple-supplied  
utility, for example a custom 'tar' in /usr/local/bin, then the shell  
will continue to prefer the Apple-supplied version unless you invoke  
it expicitly as /usr/local/bin/tar.

People have complained that this is the opposite of the 'conventional'  
Unix approach, where locally-managed hierarchies like /usr/local/bin  
come first in PATH.  This way, a local user runs 'tar' and gets  
whatever version of tar is deemed locally appropriate, while those  
wanting 'factory default' behaviour invoke /usr/bin/tar explicitly.

The path_helper way of doing it means that 'tar' is guaranteed to give  
you the vendor's supplied tar no matter what, so is helpful from this  
perspective; but of course this guarantee breaks as soon as you go to  
a non-Leopard system, or as soon as a user hacks their own PATH.  '/ 
usr/bin/tar' is still the only way to access the default tar that's  
always guaranteed to work.  Meanwhile, anyone wanting a local  
alternative tar must run /usr/local/bin/tar: so arguably you're  
requiring more work from some users while not reducing the work  
required by others.

The distinction of course only matters where someone is installing  
their own version of a supplied utility - it doesn't matter for TeX or  
anything else that doesn't arrive out of the box.

Tony M.

More information about the MacOSX-TeX mailing list