commit 88fe5876cb655fd717094932636b69230926b6ef Author: Jack-Benny Persson Date: Tue Jan 7 15:17:44 2014 +0100 First commit diff --git a/shellchooser.sh b/shellchooser.sh new file mode 100755 index 0000000..804b6eb --- /dev/null +++ b/shellchooser.sh @@ -0,0 +1,131 @@ +#!/bin/bash + +################################################################################ +# # +# Copyright (C) 2014 Jack-Benny Persson # +# # +# This program is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +################################################################################ + +# shellchooser +Version="0.1" +Author="Jack-Benny Persson (jack-benny@cyberinfo.se)" + +# Binaries +Which="/usr/bin/which" +# Binaries entered in the list will be avalible to the script as variables with +# the first letter uppercase +Binaries=(cp printf cat mktemp rm tail dialog) + +# Variables +Skel="/etc/skel" + +### Functions ### + +# Print version information +print_version() +{ + $Printf "\n\n$0 - $Version\n" +} + +# Print help information +print_help() +{ + print_version + $Printf "$Author\n" + $Printf "Shell Chooser\n" + /bin/cat <<-EOT + + Options: + -h + Print detailed help screen + -V + Print version information + EOT +} + +# Create our chooser dialog +chooser() +{ + Temp=`$Mktemp -t chooser.XXXX` + $Dialog --backtitle "Shell Chooser" \ + --menu "Choose your shell" 10 60 3 "/bin/bash" Bash \ + "/bin/dash" Dash "/bin/csh" Csh 2> $Temp + return $? + Shell=`$Cat $Temp` +} + +# Check out environment variables +check_env() +{ + case $Shell in + "/bin/bash") + diff ${HOME}/.profile ${Skel}/.profile &> /dev/null + if [ $? -ne 0 ]; then + $Cp ${Skel}/.profile ${HOME} + fi + diff ${HOME}/.bashrc ${Skel}/.bashrc &> /dev/null + if [ $? -ne 0 ]; then + $Cp ${Skel}/.bashrc ${HOME} + fi + ;; + "/bin/csh") + ;; + esac +} + +# Create variables with absolute path to binaries and check +# if we can execute it (binaries will be avaliable in +# variables with first character uppercase, such as Grep) +Count=0 +for i in ${Binaries[@]}; do + $Which $i &> /dev/null + if [ $? -eq 0 ]; then + declare $(echo ${Binaries[$Count]^}=`${Which} $i`) + ((Count++)) + else + echo "It seems you don't have ${Binaries[$Count]} installed" + exit 1 + fi +done + +# Parse command line options and arguments +while getopts Vh Opt; do + case "$Opt" in + h) print_help + exit 0 + ;; + V) print_version + exit 0 + ;; + *) short_help + exit 1 + ;; + esac +done + + +### Main ### +chooser +if [ $? -ne 0 ]; then + echo "Aborting..." + exit 1 +fi +check_env +`$Shell` + + +exit 0