#!/bin/bash # Fake uname: override environments uname e.g. in chroot usage # 2004-02-09, LTu & AMo # values copied from live system's uname output: s="Linux" n="`hostname`" r="2.4.20-28.9" v="#1 Thu Dec 18 13:45:22 EST 2003" m="i686" p="i868" i="i386" o="GNU/Linux" a="$s $n $r $v $m $p $i $o" # initialize arrays and variable for return value for (( j=0; j<9; j=j+1 )) do op[j]=0 done val[0]=$a val[1]=$s val[2]=$n val[3]=$r val[4]=$v val[5]=$m val[6]=$p val[7]=$i val[8]=$o ret="" # parse command line options while getopts "asnrvmpio" opt do case $opt in a ) op[0]=1 ;; # uname -a s ) op[1]=1 ;; # uname -s n ) op[2]=1 ;; # ... r ) op[3]=1 ;; v ) op[4]=1 ;; m ) op[5]=1 ;; p ) op[6]=1 ;; i ) op[7]=1 ;; o ) op[8]=1 ;; esac done # print return value(s) if [ ${op[0]} -eq 1 ]; then # -a prints everything ret="$a" else for (( j=1; j<9; j=j+1)); do if [ ${op[$j]} -eq 1 ]; then if [ -n "$ret" ]; then # add delimiter beetween values ret="$ret " fi ret="$ret${val[$j]}" fi done fi if [ -z "$ret" ]; then # real uname behaviour echo Linux else echo $ret fi exit 0