# 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.