1#!/bin/sh 2 3echo "This script will update your shell profile when the 'bin' directory" 4echo "of python is not early enough of the PATH of your shell." 5echo "These changes will be effective only in shell windows that you open" 6echo "after running this script." 7 8PYVER=@PYVER@ 9PYTHON_ROOT="/Library/Frameworks/Python.framework/Versions/@PYVER@" 10 11if [ `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 16else 17 theShell="${SHELL}" 18fi 19 20# Make sure the directory ${PYTHON_ROOT}/bin is on the users PATH. 21BSH="`basename "${theShell}"`" 22case "${BSH}" in 23bash|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 ;; 34esac 35 36# Now ensure that our bin directory is on $P and before /usr/bin at that 37for elem in `echo $P | tr ':' ' '` 38do 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 45done 46 47echo "${PYTHON_ROOT}/bin is not on your PATH or at least not early enough" 48case "${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 ;; 68bash) 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 ;; 79zsh) 80 PR="${HOME}/.zprofile" 81 ;; 82*sh) 83 PR="${HOME}/.profile" 84 ;; 85esac 86 87# Create backup copy before patching 88if [ -f "${PR}" ]; then 89 cp -fp "${PR}" "${PR}.pysave" 90fi 91echo "" >> "${PR}" 92echo "# Setting PATH for Python ${PYVER}" >> "${PR}" 93echo "# The original version is saved in `basename ${PR}`.pysave" >> "${PR}" 94echo 'PATH="'"${PYTHON_ROOT}/bin"':${PATH}"' >> "${PR}" 95echo 'export PATH' >> "${PR}" 96if [ `id -ur` = 0 ]; then 97 chown "${USER}" "${PR}" 98fi 99exit 0 100