Install root on ubuntu

Im following the instrution in the README file. I try to thisroot.sh but I get this error -
thisroot.sh: 31: thisroot.sh: Bad substitution”

what to do from here? when i try to run with bash I get -
thisroot.sh: line 33: ${(%):-%N}: bad substitution”

Hi,
can you post a copy-paste of your terminal when you do

$ cd path/to/your/root/installation
$ source bin/thisroot.sh
...output...

?

Cheers,
Enrico

theres no output. but here is the file:

# Source this script to set up the ROOT build that this script is part of.
#
# Conveniently an alias like this can be defined in .bashrc:
#   alias thisroot=". bin/thisroot.sh"
#
# This script if for the bash like shells, see thisroot.csh for csh like shells.
#
# Author: Fons Rademakers, 18/8/2006

drop_from_path()
{
   # Assert that we got enough arguments
   if test $# -ne 2 ; then
      echo "drop_from_path: needs 2 arguments"
      return 1
   fi

   p=$1
   drop=$2

   newpath=`echo $p | sed -e "s;:${drop}:;:;g" \
                          -e "s;:${drop}\$;;g"   \
                          -e "s;^${drop}:;;g"   \
                          -e "s;^${drop}\$;;g"`
}

if [ -n "${ROOTSYS}" ] ; then
   old_rootsys=${ROOTSYS}
fi

SOURCE=${BASH_ARGV[0]}
if [ "x$SOURCE" = "x" ]; then
    SOURCE=${(%):-%N} # for zsh
fi

if [ "x${SOURCE}" = "x" ]; then
    if [ -f bin/thisroot.sh ]; then
        ROOTSYS="$PWD"; export ROOTSYS
    elif [ -f ./thisroot.sh ]; then
        ROOTSYS=$(cd ..  > /dev/null; pwd); export ROOTSYS
    else
        echo ERROR: must "cd where/root/is" before calling ". bin/thisroot.sh" for this version of bash!
        ROOTSYS=; export ROOTSYS
        return 1
    fi
else
    # get param to "."
    thisroot=$(dirname ${SOURCE})
    ROOTSYS=$(cd ${thisroot}/.. > /dev/null;pwd); export ROOTSYS
fi

if [ -n "${old_rootsys}" ] ; then
   if [ -n "${PATH}" ]; then
      drop_from_path "$PATH" ${old_rootsys}/bin
      PATH=$newpath
   fi
   if [ -n "${LD_LIBRARY_PATH}" ]; then
      drop_from_path $LD_LIBRARY_PATH ${old_rootsys}/lib
      LD_LIBRARY_PATH=$newpath
   fi
   if [ -n "${DYLD_LIBRARY_PATH}" ]; then
      drop_from_path $DYLD_LIBRARY_PATH ${old_rootsys}/lib
      DYLD_LIBRARY_PATH=$newpath
   fi
   if [ -n "${SHLIB_PATH}" ]; then
      drop_from_path $SHLIB_PATH ${old_rootsys}/lib
      SHLIB_PATH=$newpath
   fi
   if [ -n "${LIBPATH}" ]; then
      drop_from_path $LIBPATH ${old_rootsys}/lib
      LIBPATH=$newpath
   fi
   if [ -n "${PYTHONPATH}" ]; then
      drop_from_path $PYTHONPATH ${old_rootsys}/lib
      PYTHONPATH=$newpath
   fi
   if [ -n "${MANPATH}" ]; then
      drop_from_path $MANPATH ${old_rootsys}/man
      MANPATH=$newpath
   fi
   if [ -n "${CMAKE_PREFIX_PATH}" ]; then
      drop_from_path $CMAKE_PREFIX_PATH ${old_rootsys}
      CMAKE_PREFIX_PATH=$newpath
   fi
   if [ -n "${JUPYTER_PATH}" ]; then
      drop_from_path $JUPYTER_PATH ${old_rootsys}/etc/notebook
      JUPYTER_PATH=$newpath
   fi

fi

if [ -z "${MANPATH}" ]; then
   # Grab the default man path before setting the path to avoid duplicates
   if `which manpath > /dev/null 2>&1` ; then
      default_manpath=`manpath`
   else
      default_manpath=`man -w 2> /dev/null`
   fi
fi

if [ -z "${PATH}" ]; then
   PATH=$ROOTSYS/bin; export PATH
else
   PATH=$ROOTSYS/bin:$PATH; export PATH
fi

if [ -z "${LD_LIBRARY_PATH}" ]; then
   LD_LIBRARY_PATH=$ROOTSYS/lib; export LD_LIBRARY_PATH       # Linux, ELF HP-UX
else
   LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
fi

if [ -z "${DYLD_LIBRARY_PATH}" ]; then
   DYLD_LIBRARY_PATH=$ROOTSYS/lib; export DYLD_LIBRARY_PATH   # Mac OS X
else
   DYLD_LIBRARY_PATH=$ROOTSYS/lib:$DYLD_LIBRARY_PATH; export DYLD_LIBRARY_PATH
fi

if [ -z "${SHLIB_PATH}" ]; then
   SHLIB_PATH=$ROOTSYS/lib; export SHLIB_PATH                 # legacy HP-UX
else
   SHLIB_PATH=$ROOTSYS/lib:$SHLIB_PATH; export SHLIB_PATH
fi

if [ -z "${LIBPATH}" ]; then
   LIBPATH=$ROOTSYS/lib; export LIBPATH                       # AIX
else
   LIBPATH=$ROOTSYS/lib:$LIBPATH; export LIBPATH
fi

if [ -z "${PYTHONPATH}" ]; then
   PYTHONPATH=$ROOTSYS/lib; export PYTHONPATH
else
   PYTHONPATH=$ROOTSYS/lib:$PYTHONPATH; export PYTHONPATH
fi

if [ -z "${MANPATH}" ]; then
   MANPATH=$ROOTSYS/man:${default_manpath}; export MANPATH
else
   MANPATH=$ROOTSYS/man:$MANPATH; export MANPATH
fi

if [ -z "${CMAKE_PREFIX_PATH}" ]; then
   CMAKE_PREFIX_PATH=$ROOTSYS; export CMAKE_PREFIX_PATH       # Linux, ELF HP-UX
else
   CMAKE_PREFIX_PATH=$ROOTSYS:$CMAKE_PREFIX_PATH; export CMAKE_PREFIX_PATH
fi

if [ -z "${JUPYTER_PATH}" ]; then
   JUPYTER_PATH=$ROOTSYS/etc/notebook; export JUPYTER_PATH       # Linux, ELF HP-UX
else
   JUPYTER_PATH=$ROOTSYS/etc/notebook:$JUPYTER_PATH; export JUPYTER_PATH
fi

if [ "x`root-config --arch | grep -v win32gcc | grep -i win32`" != "x" ]; then
  ROOTSYS="`cygpath -w $ROOTSYS`"
fi

unset old_rootsys
unset thisroot


Hi,
yes thisroot.sh is in the repository and has no known bugs – all developers use it daily.

If executing the two commands I wrote in my last post results in no output, it means everything is ok. ROOT should be now among your executables, you can check by doing:

$ cd path/to/your/root/installation
$ source bin/thisroot.sh
$ root

from bash, which should start a root prompt. If it doesn’t please reply with a copy-paste of what happens in your terminal when you execute the commands above.

yes it seems to be installed now and the path variables were updated.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.