The R Project SVN R

Rev

Rev 36587 | Rev 37327 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

#!/bin/sh
# Shell wrapper for R executable.

R_HOME_DIR=
if test -n "${R_HOME}" && \
   test "${R_HOME}" != "${R_HOME_DIR}"; then
  echo "WARNING: ignoring environment value of R_HOME"
fi
R_HOME="${R_HOME_DIR}"
export R_HOME
R_SHARE_DIR="${R_HOME_DIR}/share"
export R_SHARE_DIR
R_INCLUDE_DIR="${R_HOME_DIR}/include"
export R_INCLUDE_DIR
R_DOC_DIR="${R_HOME_DIR}/doc"
export R_DOC_DIR

## NOTE:
## We must set this here rather than in the main binary.
: ${R_LD_LIBRARY_PATH=${R_HOME}/lib:@R_LD_LIBRARY_PATH@}
if test -z "${@shlibpath_var@}"; then
  @shlibpath_var@="${R_LD_LIBRARY_PATH}"
else
  @shlibpath_var@="${R_LD_LIBRARY_PATH}:${@shlibpath_var@}"
fi
export @shlibpath_var@

usage="
Usage: R [options] [< infile] [> outfile]
   or: R CMD command [arguments]

Start R, a system for statistical computation and graphics, with the
specified options, or invoke an R tool via the 'R CMD' interface.

Options:
  -h, --help            Print short help message and exit
  --version             Print version info and exit
  --encoding=ENC        Specify encoding to be used for stdin
  RHOME         Print path to R home directory and exit
  --save                Do save workspace at the end of the session
  --no-save             Don't save it
  --no-environ          Don't read the site and user environment files
  --no-site-file        Don't read the site-wide Rprofile
  --no-init-file        Don't read the .Rprofile or ~/.Rprofile files
  --restore             Do restore previously saved objects at startup
  --no-restore-data     Don't restore previously saved objects
  --no-restore-history  Don't restore the R history file
  --no-restore          Don't restore anything
  --vanilla     Combine --no-save, --no-restore, --no-site-file,
            --no-init-file and --no-environ
  --no-readline         Don't use readline for command-line editing
  --min-vsize=N         Set vector heap min to N bytes; '4M' = 4 MegaB
  --max-vsize=N         Set vector heap max to N bytes;
  --min-nsize=N         Set min number of cons cells to N
  --max-nsize=N         Set max number of cons cells to N
  --max-ppsize=N        Set max size of protect stack to N
  -q, --quiet           Don't print startup message
  --silent              Same as --quiet
  --slave               Make R run as quietly as possible
  --verbose             Print more information about progress
  -d, --debugger=NAME   Run R through debugger NAME
  --debugger-args=ARGS  Pass ARGS as arguments to the debugger
  -g, --gui=TYPE    Use TYPE as GUI; possible values are 'X11'
            (default), 'Tk' and (with package gnomeGUI) 'gnome'
  --args                Skip the rest of the command line

Commands:
  BATCH         Run R in batch mode
  COMPILE       Compile files for use with R
  SHLIB         Build shared library for dynamic loading
  INSTALL       Install add-on packages
  REMOVE        Remove add-on packages
  build         Build add-on packages
  check         Check add-on packages
  LINK          Front-end for creating executable programs
  Rprof         Post-process R profiling files
  Rdconv        Convert Rd format to various other formats
  Rd2dvi        Convert Rd format to DVI/PDF
  Rd2txt        Convert Rd format to pretty text
  Sd2Rd         Convert S documentation to Rd format
  config                Obtain configuration information about R

Please use 'R CMD command --help' to obtain further information about
the usage of 'command'.

Report bugs to <r-bugs@r-project.org>."

### We also have this in compiled code -> use that one to always be in sync
# version="R REPLACE_BY_VERSION.
# Copyright (C) REPLACE_BY_YEAR R Development Core Team

# R is free software and comes with ABSOLUTELY NO WARRANTY.
# You are welcome to redistribute it under the terms of the GNU
# General Public License.  For more information about these matters,
# see http://www.gnu.org/copyleft/gpl.html."

error () {
  echo "ERROR: $*" >&2
  exit 1
}

### Argument loop
args=
debugger=
debugger_args=
gui=
R_binary="${R_HOME}/bin/exec/R"
while test -n "${1}"; do
  case ${1} in
    RHOME|--print-home)
      echo "${R_HOME}"; exit 0 ;;
    CMD)
      shift;
      exec sh "${R_HOME}/bin/Rcmd" "${@}" ;;
    -g|--gui)
      if test -n "`echo ${2} | sed 's/^-.*//'`"; then      
    gui="${2}"
        args="${args} ${1} ${2}"
    shift
      else
    error "option '${1}' requires an argument"
      fi
      ;;
    --gui=*)
      gui=`echo "${1}" | sed -e 's/[^=]*=//'`
      args="${args} ${1}"
      ;;
    -d|--debugger)
      if test -n "`echo ${2} | sed 's/^-.*//'`"; then      
    debugger="${2}"; shift
      else
    error "option '${1}' requires an argument"
      fi
      ;;
    --debugger=*)
      debugger=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
    --debugger-args=*)
      debugger_args=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
    -h|--help)
      echo "${usage}"; exit 0 ;;
## use the version in compiled code to always be in sync      
#    --version)
#      echo "${version}"; exit 0 ;;
    --args)
      break ;;
    *)
      args="${args} ${1}" ;;
  esac
  shift
done

case "${gui}" in
gnome|GNOME)
  R_binary="${R_HOME}/bin/exec/Rgnome"
  ;;
Tk|tk|X11|x11)
  ;;
"")
  ;;
*)
  error "unknown GUI ${gui}"
esac

## R_HOME may have moved, so check
## (or you get "GUI X11 is not supported")
if test -x "${R_HOME}"; then
  :
else
  error "R_HOME ('${R_HOME}') not found"
fi

## Create a per-session dir
# now done in C code
# : ${TMPDIR=/tmp}
# { tmp=`(umask 077 && mktemp -d -q "${TMPDIR}/RtmpXXXXXX") 2>/dev/null` \
#     && test -n "${tmp}" && test -d "${tmp}" ; } ||
#   { test -n "${RANDOM}" && tmp=${TMPDIR}/Rtmp$$-${RANDOM} \
#       && (umask 077 && mkdir "${tmp}") ; } ||
#   { tmp=${TMPDIR}/Rtmp$$ && (umask 077 && mkdir "${tmp}") ; } ||
#   error "cannot create temporary R session directory"
# R_SESSION_TMPDIR="${tmp}"
# export R_SESSION_TMPDIR

## Startup
if test -z "${debugger}"; then
  exec "${R_binary}" @R_BATCHSAVE@ ${args} "${@}"
else
  ## Ideally, we would like the debugger to start R with additional
  ## ('inferior') arguments, but not all debuggers can do this.  We know
  ## about valgrind and some versions of GDB , and deal with these.
  ## Otherwise, to be on the safe side, we disregard non-debugger
  ## command line args.
  args_ok=no
  case "`${debugger} --version 2>/dev/null`" in
    "GNU gdb"*)
      if ${debugger} --help 2>/dev/null | \
          grep ' *--args' >/dev/null; then
    args_ok=yes
    debugger_args="${debugger_args} --args"
      fi
      ;;
    valgrind*)
      args_ok=yes
      ;;
  esac
  if test -n "${args}${*}" && test "${args_ok}" = no; then
    args=`expr "${args} ${*}" : " *\(.*\)"`
    echo "*** Further command line arguments ('${args}') disregarded"
    echo "*** (maybe use 'run ${args}' from *inside* ${debugger})"
    echo ""
    exec ${debugger} ${debugger_args} "${R_binary}"
  else
    exec ${debugger} ${debugger_args} "${R_binary}" ${args} "${@}"
  fi
fi

### Local Variables: ***
### mode: sh ***
### sh-indentation: 2 ***
### End: ***