fakeroot.sh 891 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/bin/bash
  2. required=0
  3. persistence=/tmp/dhbxxx
  4. while getopts ":p:rc" flag; do
  5. case "$flag" in
  6. :) echo "$0: Option -$OPTARG requires an argument." 1>&2
  7. exit 1
  8. ;;
  9. \?) echo "$0: Option -$OPTARG unrecognized." 1>&2
  10. exit 1
  11. ;;
  12. p) persistence="$OPTARG" ;;
  13. r) required=1 ;;
  14. c) delpersistence=1 ;;
  15. esac
  16. done
  17. shift $((OPTIND-1))
  18. cmd=$*
  19. mkdir -p $(dirname $persistence)
  20. touch $persistence
  21. if [[ $delpersistence -eq 1 ]]; then
  22. rm -f $persistence
  23. exit 0
  24. fi
  25. if [[ "$USER" == "root" ]]; then
  26. fakeroot=""
  27. elif type fauxsu &> /dev/null; then
  28. fakeroot="fauxsu -p $persistence -- "
  29. elif type fakeroot-ng &> /dev/null; then
  30. fakeroot="fakeroot-ng -p $persistence -- "
  31. elif type fakeroot &> /dev/null; then
  32. fakeroot="fakeroot -i $persistence -s $persistence -- "
  33. else
  34. if [[ $required -eq 1 ]]; then
  35. fakeroot=""
  36. else
  37. fakeroot=": "
  38. fi
  39. fi
  40. echo $fakeroot $cmd
  41. $fakeroot $cmd