Home | History | Annotate | Download | only in scripts
      1 #!/bin/sh
      2 
      3 echo "This script will update your shell profile when the 'bin' directory"
      4 echo "of python is not early enough of the PATH of your shell."
      5 echo "These changes will be effective only in shell windows that you open"
      6 echo "after running this script."
      7 
      8 PYVER="@PYVER@"
      9 PYTHON_ROOT="/Library/Frameworks/Python.framework/Versions/@PYVER@"
     10 
     11 if [ `id -ur` = 0 ]; then
     12 	# Run from the installer, do some trickery to fetch the information
     13 	# we need.
     14 	theShell="`finger $USER | grep Shell: | head  -1 | awk '{ print $NF }'`"
     15 
     16 else
     17 	theShell="${SHELL}"
     18 fi
     19 
     20 # Make sure the directory ${PYTHON_ROOT}/bin is on the users PATH.
     21 BSH="`basename "${theShell}"`"
     22 case "${BSH}" in
     23 bash|ksh|sh|*csh|zsh)
     24 	if [ `id -ur` = 0 ]; then
     25 		P=`su - ${USER} -c 'echo A-X-4-X@@$PATH@@X-4-X-A' | grep 'A-X-4-X@@.*@@X-4-X-A' | sed -e 's/^A-X-4-X@@//g' -e 's/@@X-4-X-A$//g'`
     26 	else
     27 		P="`(exec -l ${theShell} -c 'echo $PATH')`"
     28 	fi
     29 	;;
     30 *)
     31 	echo "Sorry, I don't know how to patch $BSH shells"
     32 	exit 0
     33 	;;
     34 esac
     35 
     36 # Now ensure that our bin directory is on $P and before /usr/bin at that
     37 for elem in `echo $P | tr ':' ' '`
     38 do
     39 	if [ "${elem}" = "${PYTHON_ROOT}/bin" ]; then
     40 		echo "All right, you're a python lover already"
     41 		exit 0
     42 	elif [ "${elem}" = "/usr/bin" ]; then
     43 		break
     44 	fi
     45 done
     46 
     47 echo "${PYTHON_ROOT}/bin is not on your PATH or at least not early enough"
     48 case "${BSH}" in
     49 *csh)
     50 	if [ -f "${HOME}/.tcshrc" ]; then
     51 		RC="${HOME}/.tcshrc"
     52 	else
     53 		RC="${HOME}/.cshrc"
     54 	fi
     55 	# Create backup copy before patching
     56 	if [ -f "${RC}" ]; then
     57 		cp -fp "${RC}" "${RC}.pysave"
     58 	fi
     59 	echo "" >> "${RC}"
     60 	echo "# Setting PATH for Python ${PYVER}" >> "${RC}"
     61 	echo "# The original version is saved in .cshrc.pysave" >> "${RC}"
     62 	echo "set path=(${PYTHON_ROOT}/bin "'$path'")" >> "${RC}"
     63 	if [ `id -ur` = 0 ]; then
     64 		chown "${USER}" "${RC}"
     65 	fi
     66 	exit 0
     67 	;;
     68 bash)
     69 	if [ -e "${HOME}/.bash_profile" ]; then
     70 		PR="${HOME}/.bash_profile"
     71 	elif [ -e "${HOME}/.bash_login" ]; then
     72 		PR="${HOME}/.bash_login"
     73 	elif [ -e "${HOME}/.profile" ]; then
     74 		PR="${HOME}/.profile"
     75 	else
     76 		PR="${HOME}/.bash_profile"
     77 	fi
     78 	;;
     79 zsh)
     80         PR="${HOME}/.zprofile"
     81         ;;
     82 *sh)
     83 	PR="${HOME}/.profile"
     84 	;;
     85 esac
     86 
     87 # Create backup copy before patching
     88 if [ -f "${PR}" ]; then
     89 	cp -fp "${PR}" "${PR}.pysave"
     90 fi
     91 echo "" >> "${PR}"
     92 echo "# Setting PATH for Python ${PYVER}" >> "${PR}"
     93 echo "# The original version is saved in `basename ${PR}`.pysave" >> "${PR}"
     94 echo 'PATH="'"${PYTHON_ROOT}/bin"':${PATH}"' >> "${PR}"
     95 echo 'export PATH' >> "${PR}"
     96 if [ `id -ur` = 0 ]; then
     97 	chown "${USER}" "${PR}"
     98 fi
     99 exit 0
    100