On Wed, Jan 14, 2004 at 11:59:12AM -0600, Kent West wrote: > I need to run a test in a .bashrc startup script to see whether the > machine the user is logging onto is a Solaris or a Linux box (the /home > directory is shared between the two, and paths need to be modified > according to which OS is being logged into). > > Something like this: > > if {the first word of "uname -a" is Linux}
Why not just use 'uname', which prints Linux on Linux and SunOS on Solaris? In general, try either: if [ "`uname -a | sed -e 's/ .*//'`" = Linux ] (fairly straightforward) or: UNAME_A="`uname -a`" if [ "${UNAME_A%% *}" = Linux ] (match trailing portion of variable against shell pattern ' *'). > My problem is that I don't know how to match for the first word of > "uname -a". I've tried things like: > > if [ `uname -a`:0:5} = "Linux" ] That doesn't work because I don't believe there's a syntax anything like that in shell. > if {awk '{ print $1 }' < `uname -a` = "Linux" ] That doesn't work because < redirects from a file, not from the output of a command. This would work: if [ "`uname -a` | awk '{ print $1 }'" = Linux ] Some would think that's clearer than my sed example above, too. :) Note that I haven't quoted "Linux" in any of my examples, since it doesn't contain any metacharacters, but there's no harm in doing so. Cheers, -- Colin Watson [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]