1
0
mirror of https://github.com/wting/autojump synced 2024-10-27 20:34:07 +00:00

More intelligently modify users .bashrc and .bash_profile

install.sh:
1. for those who have a /etc/profile.d
   then grep .bashrc for the sourcing of the autocomplete code
2. for those who use OSX
   grep .bash_profile to make sure .bashrc is sourced.
This commit is contained in:
Liyan Chang 2010-07-11 16:39:41 -04:00
parent ea3cd60653
commit 2ed86b3a5e

View File

@ -19,9 +19,12 @@ function show_help {
echo "sudo ./install.sh [--prefix /usr/local]" echo "sudo ./install.sh [--prefix /usr/local]"
} }
# Default install directory.
prefix=/usr prefix=/usr
#command line parsing #
# Command line parsing
#
while true; do while true; do
case "$1" in case "$1" in
-h|--help|-\?) show_help; exit 0;; -h|--help|-\?) show_help; exit 0;;
@ -39,33 +42,55 @@ done
echo "Installing to ${prefix} ..." echo "Installing to ${prefix} ..."
#
# INSTALL AUTOJUMP
#
sudo mkdir -p ${prefix}/share/autojump/ sudo mkdir -p ${prefix}/share/autojump/
sudo cp icon.png ${prefix}/share/autojump/ sudo cp icon.png ${prefix}/share/autojump/
sudo cp jumpapplet ${prefix}/bin/ sudo cp jumpapplet ${prefix}/bin/
sudo cp autojump ${prefix}/bin/ sudo cp autojump ${prefix}/bin/
sudo cp autojump.1 ${prefix}/share/man/man1/ sudo cp autojump.1 ${prefix}/share/man/man1/
#
# INSTALL BASH AUTOCOMPLETE
#
echo "Installing Autocompletion"
if [ -d "/etc/profile.d" ]; then if [ -d "/etc/profile.d" ]; then
# Copy the autocompletion code
sudo cp autojump.bash /etc/profile.d/ sudo cp autojump.bash /etc/profile.d/
sudo cp autojump.sh /etc/profile.d/ sudo cp autojump.sh /etc/profile.d/
# Make sure that the code we just copied has been sourced.
# check if .bashrc has sourced /etc/profile or /etc/profile.d/autojump.bash
if [ `grep -c "^[[:space:]]*source\|\. /etc/profile(\.d/autojump\.bash)[[:space:]]*$" ~/.bashrc` -eq 0 ]; then
echo "Your .bashrc doesn't seem to source /etc/profile or /etc/profile.d/autojump.bash"
echo "Adding the /etc/profile.d/autojump.bash to your .bashrc"
echo "" >> ~/.bashrc
echo "# Added by autojump install.sh" >> ~/.bashrc
echo "source /etc/profile.d/autojump.bash" >> ~/.bashrc
fi
echo "Done!" echo "Done!"
echo "Remember to add the line"
echo " source /etc/profile.d/autojump.bash"
echo "or"
echo " source /etc/profile"
echo "to your ~/.bashrc if it's not there already"
# TODO intelligently source /etc/profile for them if the line isn't already in their .bashrc
else else
echo "Your distribution does not have a /etc/profile.d directory, the default that we install one of the scripts to. Would you like us to copy it into your ~/.bashrc file to make it work? (If you have done this once before, delete the old version before doing it again.) [y/n]" echo "Your distribution does not have a /etc/profile.d directory, the default that we install one of the scripts to. Would you like us to copy it into your ~/.bashrc file to make it work? (If you have done this once before, delete the old version before doing it again.) [y/n]"
read ans read ans
if [ ${#ans} -gt 0 ]; then if [ ${#ans} -gt 0 ]; then
if [ $ans = "y" -o $ans = "Y" -o $ans = "yes" -o $ans = "Yes" ]; then if [ $ans = "y" -o $ans = "Y" -o $ans = "yes" -o $ans = "Yes" ]; then
# Answered yes. Go ahead and add the autojump bash autocompletion code
echo "" >> ~/.bashrc echo "" >> ~/.bashrc
echo "#autojump" >> ~/.bashrc echo "#autojump" >> ~/.bashrc
cat autojump.bash >> ~/.bashrc cat autojump.bash >> ~/.bashrc
# Since OSX uses .bash_profile, we need to make sure that .bashrc is properly sourced.
# Makes the assumption that if they have a line: source ~/.bashrc or . ~/.bashrc, that
# .bashrc has been properly sourced and you don't need to add it.
OS=`uname` OS=`uname`
if [ $OS == 'Darwin' ]; then if [ $OS == 'Darwin' -a `grep -c "^[[:space:]]*source\|\. ~/\.bashrc[[:space:]]*$" ~/.bash_profile` -eq 0 ]; then
echo "You are using OSX and your .bash_profile doesn't seem to be sourcing .bashrc"
echo "Adding source ~/.bashrc to your bashrc"
echo -e "\n# Get the aliases and functions" >> ~/.bash_profile echo -e "\n# Get the aliases and functions" >> ~/.bash_profile
echo -e "\nif [ -f ~/.bashrc ]; then\n . ~/.bashrc\nfi" >> ~/.bash_profile echo -e "if [ -f ~/.bashrc ]; then\n . ~/.bashrc\nfi" >> ~/.bash_profile
fi fi
else else
echo "Then you need to put autojump.sh, or the code from it, somewhere where it will get read. Good luck!" echo "Then you need to put autojump.sh, or the code from it, somewhere where it will get read. Good luck!"