On 25 Aug 2012, at 19:15, Kassen wrote:
On Sat, Aug 25, 2012 at 07:03:42PM +0200, Hans Aberg wrote:
Of course, one can set ones own PATH, especially since the system PATH has the wrong order: /usr/local/bin/ should normally be ahead of the system installation objects, so you get the latest version when installing duplicates.
Yes, I agree.
On Mac OS X, one can change the system PATH by putting stuff in some directory somewhere, but then it is read in its own order (alphabetical probably). This is how it gets the wrong order.
I haven't see that, but for the program Terminal, one should set in .profile, whereas for X11 and xterm in .bashrc. So my .bashrc contains source ~/.profile
I think Linux will typically respect both (I forgot the order), and not just in X11, the TTY's read it too, at login.
Anyway, where it goes wrong (IMHO) is if you have a directory like ~/scripts In that case you'd put that in your path, perhaps even at the beginning. From memory; if you put a custom version of ChucK there for testing then "which chuck" -on OSX- will return /usr/bin/chuck while executing "chuck" will ~/scripts/chuck
That, needless to say, can cause confusion, though admittedly it is a independent issue from the one you are addressing.
As far as I know, 'which' just uses PATH. I have a ~/bin/ directory; here is test: $ which chuck /usr/local/bin/chuck $ cp /usr/local/bin/chuck bin/ $ which chuck /Users/<user>/bin/chuck And my PATH is (some stuff removed) /Users/<user>/bin:/usr/local/bin:/usr/local/X11R6/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin
I have users in mind that we on occasion have seen here who know very little about UNIX and POSIX. If they have pre-10.7, it is easiest for them to use /usr/bin/.
I agree, and I think that should be done by the makefile. What could be considered is the makefile reading the system path and if /usr/local/bin is in it (likely indicating ISX 10.7 or later) put it there, otherwise in /usr/bin like it used to be.
That'd be correct in all cases I can think of without breaking old stuff.
It would not work if the user has a custom version. The standard way, that ism what I have seen on most packages, is that 'make install' puts binaries in /usr/local/bin/, docs in /usr/local/share/doc/chuck/, and examples in /usr/local/share/chuck/examples/. Then one uses a prefix variable that can be changed from the default /usr/local/. There is a "Filesystem Hierarchy Standard" which BSD/GNU Linux system largely adheres to. It might be simpler to forget about a custom install for before 10.7 Mac OS X. Hans