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