mirror of
https://github.com/python/cpython.git
synced 2025-11-02 22:51:25 +00:00
Separate the installer `Shell profile updater` postinstall script from the `Update Shell Profile.command` to enable more robust error handling.
104 lines
2.4 KiB
Bash
Executable file
104 lines
2.4 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
PYVER=@PYVER@
|
|
PYTHON_ROOT="/Library/Frameworks/Python.framework/Versions/@PYVER@"
|
|
|
|
|
|
# Run from the installer, do some trickery to fetch the information
|
|
# we need.
|
|
theShell="`finger $USER | grep Shell: | head -1 | awk '{ print $NF }'`"
|
|
|
|
# Make sure the directory ${PYTHON_ROOT}/bin is on the users PATH.
|
|
BSH="`basename "${theShell}"`"
|
|
case "${BSH}" in
|
|
bash|ksh|sh|*csh|zsh|fish)
|
|
true
|
|
;;
|
|
*)
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
case "${BSH}" in
|
|
*csh)
|
|
if [ -f "${HOME}/.tcshrc" ]; then
|
|
RC="${HOME}/.tcshrc"
|
|
else
|
|
RC="${HOME}/.cshrc"
|
|
fi
|
|
|
|
# Drop privileges while writing files.
|
|
su -m ${USER} <<EOFC
|
|
# Create backup copy before patching
|
|
if [ -f "${RC}" ]; then
|
|
cp -fp "${RC}" "${RC}.pysave"
|
|
fi
|
|
echo "" >> "${RC}"
|
|
echo "# Setting PATH for Python ${PYVER}" >> "${RC}"
|
|
echo "# The original version is saved in .cshrc.pysave" >> "${RC}"
|
|
echo "set path=(${PYTHON_ROOT}/bin "'\$path'")" >> "${RC}"
|
|
EOFC
|
|
|
|
if [ `id -ur` = 0 ]; then
|
|
chown -h "${USER}" "${RC}"
|
|
fi
|
|
exit 0
|
|
;;
|
|
bash)
|
|
if [ -e "${HOME}/.bash_profile" ]; then
|
|
PR="${HOME}/.bash_profile"
|
|
elif [ -e "${HOME}/.bash_login" ]; then
|
|
PR="${HOME}/.bash_login"
|
|
elif [ -e "${HOME}/.profile" ]; then
|
|
PR="${HOME}/.profile"
|
|
else
|
|
PR="${HOME}/.bash_profile"
|
|
fi
|
|
;;
|
|
fish)
|
|
CONFIG_DIR="${HOME}/.config/fish/conf.d/"
|
|
RC="${CONFIG_DIR}/python-${PYVER}.fish"
|
|
|
|
# Drop privileges while writing files.
|
|
su -m ${USER} <<EOFF
|
|
mkdir -p "$CONFIG_DIR"
|
|
if [ -f "${RC}" ]; then
|
|
cp -fp "${RC}" "${RC}.pysave"
|
|
fi
|
|
echo "# Setting PATH for Python ${PYVER}" > "${RC}"
|
|
if [ -f "${RC}.pysave" ]; then
|
|
echo "# The original version is saved in ${RC}.pysave" >> "${RC}"
|
|
fi
|
|
echo "fish_add_path -g \"${PYTHON_ROOT}/bin\"" >> "${RC}"
|
|
EOFF
|
|
|
|
if [ `id -ur` = 0 ]; then
|
|
chown -h "${USER}" "${RC}"
|
|
fi
|
|
exit 0
|
|
;;
|
|
zsh)
|
|
PR="${HOME}/.zprofile"
|
|
;;
|
|
*sh)
|
|
PR="${HOME}/.profile"
|
|
;;
|
|
esac
|
|
|
|
# Drop privileges while writing files.
|
|
su -m ${USER} <<EOFS
|
|
# Create backup copy before patching
|
|
if [ -f "${PR}" ]; then
|
|
cp -fp "${PR}" "${PR}.pysave"
|
|
fi
|
|
echo "" >> "${PR}"
|
|
echo "# Setting PATH for Python ${PYVER}" >> "${PR}"
|
|
echo "# The original version is saved in `basename ${PR}`.pysave" >> "${PR}"
|
|
echo 'PATH="'"${PYTHON_ROOT}/bin"':\${PATH}"' >> "${PR}"
|
|
echo 'export PATH' >> "${PR}"
|
|
EOFS
|
|
|
|
if [ `id -ur` = 0 ]; then
|
|
chown -h "${USER}" "${PR}"
|
|
fi
|
|
exit 0
|