From 2ed86b3a5ebc176ef1db92561f8edee6f2597cb1 Mon Sep 17 00:00:00 2001 From: Liyan Chang Date: Sun, 11 Jul 2010 16:39:41 -0400 Subject: [PATCH] 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. --- install.sh | 61 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/install.sh b/install.sh index 079578f..6901278 100755 --- a/install.sh +++ b/install.sh @@ -19,9 +19,12 @@ function show_help { echo "sudo ./install.sh [--prefix /usr/local]" } +# Default install directory. prefix=/usr -#command line parsing +# +# Command line parsing +# while true; do case "$1" in -h|--help|-\?) show_help; exit 0;; @@ -39,38 +42,60 @@ done echo "Installing to ${prefix} ..." +# +# INSTALL AUTOJUMP +# sudo mkdir -p ${prefix}/share/autojump/ sudo cp icon.png ${prefix}/share/autojump/ sudo cp jumpapplet ${prefix}/bin/ sudo cp autojump ${prefix}/bin/ sudo cp autojump.1 ${prefix}/share/man/man1/ + +# +# INSTALL BASH AUTOCOMPLETE +# +echo "Installing Autocompletion" + if [ -d "/etc/profile.d" ]; then + # Copy the autocompletion code sudo cp autojump.bash /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 "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 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 if [ ${#ans} -gt 0 ]; then - if [ $ans = "y" -o $ans = "Y" -o $ans = "yes" -o $ans = "Yes" ]; then - echo "" >> ~/.bashrc - echo "#autojump" >> ~/.bashrc - cat autojump.bash >> ~/.bashrc + 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 "#autojump" >> ~/.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` - if [ $OS == 'Darwin' ]; then - echo -e "\n# Get the aliases and functions" >> ~/.bash_profile - echo -e "\nif [ -f ~/.bashrc ]; then\n . ~/.bashrc\nfi" >> ~/.bash_profile + 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 "if [ -f ~/.bashrc ]; then\n . ~/.bashrc\nfi" >> ~/.bash_profile fi - else - echo "Then you need to put autojump.sh, or the code from it, somewhere where it will get read. Good luck!" - fi + else + echo "Then you need to put autojump.sh, or the code from it, somewhere where it will get read. Good luck!" + fi 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!" fi fi