| #!@R_SHELL@ |
| # Shell wrapper for R executable. |
| |
| R_HOME_DIR= |
| if test "${R_HOME_DIR}" = "@prefix@/@LIBnn@/R"; then |
| case "@R_OS@" in |
| linux*) |
| run_arch=`uname -m` |
| case "$run_arch" in |
| x86_64|mips64|ppc64|powerpc64|sparc64|s390x) |
| libnn=lib64 |
| libnn_fallback=lib |
| ;; |
| *) |
| libnn=lib |
| libnn_fallback=lib64 |
| ;; |
| esac |
| if [ -x "@prefix@/${libnn}/R/bin/exec/R" ]; then |
| R_HOME_DIR="@prefix@/${libnn}/R" |
| elif [ -x "@prefix@/${libnn_fallback}/R/bin/exec/R" ]; then |
| R_HOME_DIR="@prefix@/${libnn_fallback}/R" |
| ## else -- leave alone (might be a sub-arch) |
| fi |
| ;; |
| esac |
| fi |
| |
| 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 |
| |
| # Since this script can be called recursively, we allow R_ARCH to |
| # be overridden from the environment. |
| # This script is shared by parallel installs, so nothing in it should |
| # depend on the sub-architecture except the default here. |
| : ${R_ARCH=@R_ARCH@} |
| |
| 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 |
| --encoding ENC |
| 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 user R profile |
| --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 |
| --max-ppsize=N Set max size of protect stack to N |
| --min-nsize=N Set min number of fixed size obj's (\"cons cells\") to N |
| --min-vsize=N Set vector heap minimum to N bytes; '4M' = 4 MegaB |
| -q, --quiet Don't print startup message |
| --silent Same as --quiet |
| --slave Make R run as quietly as possible |
| --interactive Force an interactive session |
| --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 TYPE, --gui=TYPE Use TYPE as GUI; possible values are 'X11' (default) |
| and 'Tk'. |
| --arch=NAME Specify a sub-architecture |
| --args Skip the rest of the command line |
| -f FILE, --file=FILE Take input from 'FILE' |
| -e EXPR Execute 'EXPR' and exit |
| |
| FILE may contain spaces but not shell metacharacters. |
| |
| 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 |
| Rd2pdf Convert Rd format to PDF |
| Rd2txt Convert Rd format to pretty text |
| Stangle Extract S/R code from Sweave documentation |
| Sweave Process Sweave documentation |
| Rdiff Diff R output ignoring headers etc |
| config Obtain configuration information about R |
| javareconf Update the Java configuration variables |
| rtags Create Emacs-style tag files from C, R, and Rd files |
| |
| Please use 'R CMD command --help' to obtain further information about |
| the usage of 'command'. |
| |
| Options --arch, --no-environ, --no-init-file, --no-site-file and --vanilla |
| can be placed between R and CMD, to apply to R processes run by 'command' |
| |
| Report bugs at <https://bugs.R-project.org>." |
| |
| ## some systems have a more portable sed, e.g. /usr/xpg4/bin/sed on Solaris, |
| ## so make sure that is used. |
| SED=@SED@ |
| export SED |
| |
| error () { |
| echo "ERROR: $*" >&2 |
| exit 1 |
| } |
| |
| ### Argument loop |
| args= |
| debugger= |
| debugger_args= |
| gui= |
| while test -n "${1}"; do |
| case ${1} in |
| RHOME|--print-home) |
| echo "${R_HOME}"; exit 0 ;; |
| CMD) |
| shift; |
| export R_ARCH |
| . "${R_HOME}/etc${R_ARCH}/ldpaths" |
| 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 ;; |
| --args) |
| break ;; |
| --arch) |
| if test -n "`echo ${2} | ${SED} 's/^-.*//'`"; then |
| R_ARCH="/${2}" |
| shift |
| else |
| error "option '${1}' requires an argument" |
| fi |
| ## check sub-architecture here for a better error message |
| if ! test -d ${R_HOME}/etc${R_ARCH}; then |
| error "sub-architecture '${1}' is not installed" |
| fi |
| ;; |
| --arch=*) |
| r_arch=`echo "${1}" | ${SED} -e 's/[^=]*=//'` |
| R_ARCH="/${r_arch}" |
| ## check sub-architecture here for a better error message |
| if ! test -d ${R_HOME}/etc${R_ARCH}; then |
| error "sub-architecture '${r_arch}' is not installed" |
| fi |
| ;; |
| -e) |
| if test -n "`echo ${2} | ${SED} 's/^-.*//'`"; then |
| a=`(echo "${2}" && echo) | ${SED} -e 's/ /~+~/g' | \ |
| ${SED} -e :a -e N -e '$!ba' -e 's/\n/~n~/g' -e 's/~n~$//g'` |
| shift |
| else |
| error "option '${1}' requires a non-empty argument" |
| fi |
| args="${args} -e $a" |
| ;; |
| -f) |
| if test -n "`echo ${2} | ${SED} 's/^-.*//'`"; then |
| a=`echo "${2}" | ${SED} -e 's/ /~+~/g'`; shift |
| else |
| error "option '${1}' requires a filename argument" |
| fi |
| args="${args} -f $a" |
| ;; |
| --file=*) |
| a=`echo "${1}" | ${SED} -e 's/[^=]*=//' | ${SED} -e 's/ /~+~/g'` |
| args="${args} --file=$a" |
| ;; |
| --no-environ) |
| export R_ENVIRON='' |
| export R_ENVIRON_USER='' |
| args="${args} ${1}" |
| ;; |
| --no-site-file) |
| export R_PROFILE='' |
| args="${args} ${1}" |
| ;; |
| --no-init-file) |
| export R_PROFILE_USER='' |
| args="${args} ${1}" |
| ;; |
| --vanilla) |
| export R_ENVIRON='' |
| export R_ENVIRON_USER='' |
| export R_PROFILE='' |
| export R_PROFILE_USER='' |
| args="${args} ${1}" |
| ;; |
| *) |
| args="${args} ${1}" ;; |
| esac |
| shift |
| done |
| |
| . "${R_HOME}/etc${R_ARCH}/ldpaths" |
| |
| R_binary="${R_HOME}/bin/exec${R_ARCH}/R" |
| export R_ARCH |
| |
| case "${gui}" in |
| Tk|tk|X11|x11) |
| ;; |
| "") |
| ;; |
| *) |
| error "unknown GUI ${gui}" |
| esac |
| |
| ## R_HOME may have moved, so check |
| if test -x "${R_HOME}"; then |
| : |
| else |
| error "R_HOME ('${R_HOME}') not found" |
| fi |
| |
| ## 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: *** |