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 orginal 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 orginal 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
|
---|