Telling csh about multiple, machine-dependent libraries

John M Chambers jc at heart-of-gold
Thu Nov 17 03:47:19 AEST 1988


Here's one that someone has gotta have solved already:

We have NFS-mounted filesystems on a lot of different kinds of machines,
and of course there is a problem with trying to execute binary files on
the wrong machine.  It's pretty easy to build the binaries, of course;
I just set up a heirarchy:
	~foo/src	contains generic source.
	~foo/sun2	contains a Makefile and binaries for a Sun2
	~foo/sun3	contains a Makefile and binaries for a Sun3
	~foo/vax	contains a Makefile and binaries for a VAX
	~foo/x286	contains a Makefile and binaries for a 80286/Xenix
	~foo/x386	contains a Makefile and binaries for a 80386/Xenix 
and so on.  Source files are linked from src as necessary.

Now, when I log in, I'd like  to include the right directory in my search
path.  My latest (failed) attempt in cshrc looks like:

| set mtype = bin
| if (`sun2`) set mtype = sun2
| if (`sun3`) set mtype = sun3
| if (`sun4`) set mtype = sun4
| set path=(. ~/{$mtype,sh,csh,awk} /bin /usr/{ucb,etc,local,local/{$mtype,sh},bin,lib,dos,hosts,games,demo,NeWS/{bin,demo}} /etc)

Note that the replicated binary directories are also in /local, as a simple
way of getting public libraries.  Anyhow, as I said, the above code doesn't
work.  While the `sun3` command on this 3/260 returns TRUE (i.e., 0), the
value of $path includes ~/bin, not ~/sun3.  I've tried a few other variants,
includeing such things as
	sun3 && set mtype = sun3
all to no avail.

Does anyone know how to do this right?

For that matter, the above code, if taken to a machine that lacks, e.g., 
a `sun4` command, bombs out and fails to read the rest of .cshrc, so this 
is obviously not a general approach.  In reading the manuals, I haven't 
been able to find any way of answering the question "What the hell sort 
of CPU am I running on, anyway?"  I also don't recall ever reading any 
flame session (oops, I mean in-depth technical discussion) of the topic 
on usenet.  Is there a portable answer to this question?



More information about the Comp.unix.questions mailing list