bsdinst.sh
上传用户:duobangkj
上传日期:2007-01-07
资源大小:70k
文件大小:2k
源码类别:

Telnet客户端

开发平台:

Unix_Linux

  1. #! /bin/sh
  2. #
  3. # This accepts bsd-style install arguments and executes them
  4. #
  5. die()
  6. {
  7.     echo "$*" 1>&2
  8.     exit 1
  9. }
  10. dest=""
  11. src=""
  12. strip="false"
  13. owner=""
  14. group=""
  15. mode="755"
  16. while [ -n "$1" ]
  17. do
  18.     case $1 in 
  19.     -c) ;;
  20.     -m) mode="$2"
  21. shift
  22. ;;
  23.     -o) owner="$2"
  24. shift
  25. ;;
  26.     -g) group="$2"
  27. shift
  28. ;;
  29.     -s) strip="true"
  30. ;;
  31.     -*) die "Illegal option"
  32. ;;
  33.     *) if [ -z "$2" ]
  34. then
  35. dest="$1"
  36. break
  37. fi
  38.      src="$src $1"
  39.      if [ ! -f "$1" -o ! -r "$1" ]
  40. then
  41. die "$1: file does not exist or is not readable"
  42. fi
  43. ;;
  44.     esac
  45.     shift
  46. done
  47. [ -n "$dest" ] || die "No destination specified"
  48. [ -n "$src" ] || die "No file specified"
  49. if [ ! -d "$dest" ]
  50. then
  51.     count=0
  52.     for i in $src
  53.     do
  54. count=`expr $count + 1`
  55.     done
  56.     if [ "$count" -eq 1 ]
  57.     then
  58. parent=`dirname $dest`
  59. if [ -d "$parent" ]
  60. then
  61. newname=`basename $dest`
  62. dest=$parent
  63. fi
  64.     fi
  65.     [ -n "$newname" ] || die "$dest: No such directory"
  66. fi
  67. # Here's where the real work happens.  Note that on some systems, chown
  68. # clears SUID and SGID bits for non-superusers.  Thus, the chmod has to
  69. # follow chown.  However, under System V, you can not chmod SUID or SGID
  70. # permissions unless you are the owner or superuser.
  71. # If you are in doubt, "su" first!
  72. for i in $src
  73. do
  74.     set -e
  75.     ofile=$dest/${newname:-$i}
  76.     rm -f $ofile
  77.     cp $i $ofile
  78.     if $strip
  79.     then
  80. strip $ofile
  81. if i386
  82. then
  83. mcs -d $ofile
  84. fi
  85.     fi
  86.     if [ -n "$group" ]
  87.     then
  88. chgrp $group $ofile
  89.     fi
  90.     if [ -n "$owner" ]
  91.     then
  92. chown $owner $ofile
  93.     fi
  94.     chmod $mode $ofile
  95.     set +e
  96. done
  97. exit 0