• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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|fish)
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	;;
79fish)
80	CONFIG_DIR="${HOME}/.config/fish/conf.d/"
81	RC="${CONFIG_DIR}/python-${PYVER}.fish"
82	mkdir -p "$CONFIG_DIR"
83	if [ -f "${RC}" ]; then
84		cp -fp "${RC}" "${RC}.pysave"
85	fi
86	echo "# Setting PATH for Python ${PYVER}" > "${RC}"
87	if [ -f "${RC}.pysave" ]; then
88		echo "# The original version is saved in ${RC}.pysave" >> "${RC}"
89	fi
90	echo "fish_add_path -g \"${PYTHON_ROOT}/bin\"" >> "${RC}"
91	if [ `id -ur` = 0 ]; then
92		chown "${USER}" "${RC}"
93	fi
94	exit 0
95	;;
96zsh)
97        PR="${HOME}/.zprofile"
98        ;;
99*sh)
100	PR="${HOME}/.profile"
101	;;
102esac
103
104# Create backup copy before patching
105if [ -f "${PR}" ]; then
106	cp -fp "${PR}" "${PR}.pysave"
107fi
108echo "" >> "${PR}"
109echo "# Setting PATH for Python ${PYVER}" >> "${PR}"
110echo "# The original version is saved in `basename ${PR}`.pysave" >> "${PR}"
111echo 'PATH="'"${PYTHON_ROOT}/bin"':${PATH}"' >> "${PR}"
112echo 'export PATH' >> "${PR}"
113if [ `id -ur` = 0 ]; then
114	chown "${USER}" "${PR}"
115fi
116exit 0
117