Differences
This shows you the differences between two versions of the page.
linux_wiki:arch_linux_post_install_config [2014/11/18 23:13] billdozor |
linux_wiki:arch_linux_post_install_config [2019/05/25 23:50] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Arch Linux Post Install Config ====== | ||
- | This is a bash script written in 2011 as a project that walked through the Arch Linux configuration guide after a fresh install. The point was to quickly customize a system, without taking away the level of control that performing this manually would. | ||
- | It is a long script and uses some interesting bash syntax, that I often refer back to for examples. | ||
- | |||
- | < | ||
- | #!/bin/bash | ||
- | |||
- | ## Arch Linux Post Install Interactive-Config | ||
- | ## Author: Bill Howe, 10/22/2011 | ||
- | ## Version: 0.6b (beta) | ||
- | ## | ||
- | ## -Description: | ||
- | ### post installation setup of an Arch Linux build. The items that are | ||
- | ### configured via this script are: network config/ | ||
- | ### system upgrade, standard user account creation, sudo install/ | ||
- | ### install Xorg (X Windows), Video Drivers, Testing Xorg, Installing fonts, | ||
- | ### installing a desktop environment, | ||
- | ### proper user directories. (.xinitrc files) | ||
- | ### | ||
- | ### -Arch Versions: Works with 2010.05 and 2011.08 64 and 32 bit core install. | ||
- | ### All other versions untested, but should work with all net installs. | ||
- | ### | ||
- | ### -Known Issue: If the list of countries is displayed a 2nd time (user | ||
- | ### | ||
- | ### | ||
- | clear | ||
- | echo -e "===== Arch Linux Post Install Interactive-Config (0.6b) =====" | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e "\n#If at any point you see an option in brackets, like [example]," | ||
- | echo -e " | ||
- | |||
- | echo -e " | ||
- | read | ||
- | ###################### | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | #Initial ping test, this will work if the network daemon was successful | ||
- | echo -e "# | ||
- | PINGRESULTS=`ping -c 3 www.archlinux.org | awk '/ | ||
- | |||
- | if [ -z " | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read NETINTERFACE | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | NETINTERFACE=" | ||
- | fi | ||
- | | ||
- | echo -e " | ||
- | ifconfig $NETINTERFACE up | ||
- | dhcpcd -k $NETINTERFACE | ||
- | dhcpcd -n $NETINTERFACE | ||
- | |||
- | echo -e " | ||
- | echo -e ">> | ||
- | read WEBSITE | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | WEBSITE=" | ||
- | fi | ||
- | | ||
- | echo -e " | ||
- | PINGRESULTS=`ping -c 3 $WEBSITE | awk '/ | ||
- | | ||
- | if [ -z " | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read STATICNETWORK | ||
- | | ||
- | if [ -z " | ||
- | STATICNETWORK=" | ||
- | fi | ||
- | | ||
- | #setup static network until user says its correct | ||
- | while true ; do | ||
- | | ||
- | case $STATICNETWORK in | ||
- | [yY]) | ||
- | echo -e ">> | ||
- | read IP | ||
- | echo -e ">> | ||
- | read MASK | ||
- | echo -e ">> | ||
- | read GW | ||
- | echo -e ">> | ||
- | read DNS | ||
- | | ||
- | # If DNS not set, use Google' | ||
- | if [ -z " | ||
- | | ||
- | fi | ||
- | | ||
- | echo -e " | ||
- | echo -e "--IP Address: $IP" | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read CORRECT | ||
- | |||
- | if [ -z " | ||
- | | ||
- | fi | ||
- | |||
- | case $CORRECT in | ||
- | [yY]) | ||
- | # Setup Static Network | ||
- | | ||
- | route add default gw $GW | ||
- | |||
- | # Add the nameserver to the first line in resolv.conf | ||
- | sed -i ' | ||
- | |||
- | echo -e " | ||
- | echo -e ">> | ||
- | read WEBSITE | ||
- | |||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | | ||
- | fi | ||
- | | ||
- | echo -e " | ||
- | | ||
- | if [ -z " | ||
- | # All automated attempts at network setup have failed, exit program. | ||
- | echo -e " | ||
- | echo -e " | ||
- | exit 1 | ||
- | fi | ||
- | |||
- | #If we get here, static network config successful, break out of loop | ||
- | echo -e " | ||
- | break | ||
- | ;; | ||
- | *) | ||
- | # set static network info again | ||
- | echo -e " | ||
- | continue | ||
- | ;; | ||
- | esac # END of "is this CORRECT" | ||
- | |||
- | ;; #END of "YES, set static ip" | ||
- | | ||
- | *) #User Does not want to setup a static network and Dynamic Config failed, exit. | ||
- | echo -e "# | ||
- | exit 1 | ||
- | ;; | ||
- | esac #End of static network case check | ||
- | done #End of loop to set static network info until correct | ||
- | |||
- | fi # END of secondary ping check (after prompting for website) | ||
- | fi # END of initial ping attempt check statement | ||
- | |||
- | # Pings now successful, continue. | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ####################### | ||
- | |||
- | ####################### | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | # Check to see if architecture is 64 bit, if so, offer to use multilib | ||
- | ARCH=`uname -m` | ||
- | |||
- | if [ " | ||
- | |||
- | echo -e "#The multilib repository enables 32-bit applications on Arch x86_64." | ||
- | echo -e ">> | ||
- | read ENABLEMULTILIB | ||
- | |||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | ENABLEMULTILIB=" | ||
- | fi | ||
- | |||
- | if [ " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | else | ||
- | echo -e " | ||
- | fi | ||
- | fi | ||
- | |||
- | #Set Internal field separator to a literal new line (" | ||
- | #This is required to properly build the COUNTRYLIST array | ||
- | IFS=' | ||
- | ' | ||
- | |||
- | #Create an array of the countries | ||
- | #awk:Change field seperator to newline, search mirrorlist for lines that have "# .*" at the beginning | ||
- | #awk:print that field (should be a country name) pipe to sed | ||
- | #sed: filter out Lines that aren't countries (Arch, Generated, Any) and remove "# "' | ||
- | COUNTRYLIST=(`awk -F" | ||
- | |||
- | #Get total number of countries found | ||
- | NUMCOUNTRIES=${# | ||
- | |||
- | # Loop through country selection until a valid country is selected | ||
- | #### START OF SELECT COUNTRY WHILE LOOP #### | ||
- | while true ; do | ||
- | echo -e " | ||
- | |||
- | #Loop through list and display countries in two columns | ||
- | INDEX=0 | ||
- | while [ $INDEX -lt $NUMCOUNTRIES ] ; do | ||
- | |||
- | echo -e " | ||
- | |||
- | #Check to see if country has spaces. if yes: echo only 1 tab, otherwise 2 tabs | ||
- | if [ `echo " | ||
- | echo -e " | ||
- | else | ||
- | echo -e " | ||
- | fi | ||
- | (( INDEX=INDEX+1 )) | ||
- | |||
- | #If the new index is out of range, break out of the while loop | ||
- | if [ $INDEX -ge $NUMCOUNTRIES ] ; then break ; fi | ||
- | | ||
- | echo -e " | ||
- | (( INDEX=INDEX+1 )) | ||
- | done | ||
- | |||
- | echo -e " | ||
- | read ENTERCOUNTRY | ||
- | |||
- | #Reset Internal field separator to a space | ||
- | IFS=' ' | ||
- | |||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z $ENTERCOUNTRY ] ; then | ||
- | COUNTRY=" | ||
- | |||
- | #Otherwise, assign the country based upon the number (-1 to offset menu starting | ||
- | #at 1 instead of zero) | ||
- | elif [ $ENTERCOUNTRY -ge 1 -a $ENTERCOUNTRY -le $NUMCOUNTRIES ] ; then | ||
- | COUNTRY=" | ||
- | |||
- | else | ||
- | echo -e "# | ||
- | echo -e ">> | ||
- | read | ||
- | continue | ||
- | fi | ||
- | |||
- | echo -e " | ||
- | echo -e ">> | ||
- | read CORRECT | ||
- | |||
- | #if user just pressed enter, assume yes | ||
- | if [ -z " | ||
- | CORRECT=" | ||
- | fi | ||
- | |||
- | # If the country is correct, break out of while loop, if not, ask for country again | ||
- | if [ " | ||
- | break | ||
- | fi | ||
- | |||
- | done | ||
- | #### END OF SELECT COUNTRY WHILE LOOP #### | ||
- | |||
- | echo -e " | ||
- | cp / | ||
- | |||
- | # Reset all servers to commented | ||
- | echo -e "# | ||
- | sed -i ' | ||
- | |||
- | echo -e "# | ||
- | # Find all mirrors in specified country with awk, save to countryMirrors file | ||
- | awk -v COUNTRY=" | ||
- | |||
- | # Insert country name, commented at top of list | ||
- | sed -i '1i '"# | ||
- | |||
- | echo -e "# | ||
- | # Uncomment all mirrors from countryMirrors with sed | ||
- | sed -i ' | ||
- | |||
- | echo -e "# | ||
- | cat / | ||
- | |||
- | echo -e " | ||
- | pacman -Syy | ||
- | |||
- | echo -e " | ||
- | while true ; do | ||
- | # Check to see if curl is installed, if so exit loop, if not run pacman | ||
- | CURLDIR=`which curl` | ||
- | if [ " | ||
- | break | ||
- | fi | ||
- | echo -e " | ||
- | pacman -S --noconfirm curl | ||
- | done | ||
- | |||
- | echo -e " | ||
- | rankmirrors -n 6 / | ||
- | |||
- | echo -e "# | ||
- | pacman -Syy | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ######################## | ||
- | |||
- | ######################## | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | echo -e ">> | ||
- | read | ||
- | |||
- | echo -e " | ||
- | pacman -Syu --noconfirm | ||
- | |||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ######################## | ||
- | |||
- | ###################### | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | # Loop to prompt for user account creation until quit detected | ||
- | while true ; do | ||
- | echo -e ">> | ||
- | read ADDUSER | ||
- | |||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | ADDUSER=" | ||
- | fi | ||
- | |||
- | case $ADDUSER in | ||
- | [yY]) | ||
- | #prompt for info | ||
- | echo -e ">> | ||
- | read USERNAME | ||
- | echo -e ">> | ||
- | read INITIALGROUP | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | INITIALGROUP=" | ||
- | fi | ||
- | | ||
- | echo -e ">> | ||
- | read ADDGROUPS | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | ADDGROUPS=" | ||
- | fi | ||
- | | ||
- | echo -e ">> | ||
- | read SHELL | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | SHELL="/ | ||
- | fi | ||
- | | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | | ||
- | echo -e ">> | ||
- | read CREATEUSER | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | CREATEUSER=" | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | echo -e " | ||
- | useradd -m -g $INITIALGROUP -G $ADDGROUPS -s $SHELL $USERNAME | ||
- | | ||
- | echo -e ">> | ||
- | passwd $USERNAME | ||
- | echo -e "" | ||
- | | ||
- | else | ||
- | echo -e " | ||
- | fi | ||
- | ;; # Create user account " | ||
- | *) # No, do not create user account. Exit loop | ||
- | echo -e "# | ||
- | break | ||
- | ;; | ||
- | esac | ||
- | done | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ######################## | ||
- | |||
- | ######################## | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | echo -e " | ||
- | SUDODIR=`which sudo` | ||
- | if [ " | ||
- | echo -e " | ||
- | else | ||
- | echo -e " | ||
- | read INSTALLSUDO | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | INSTALLSUDO=" | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | echo -e "# | ||
- | pacman -S --noconfirm sudo | ||
- | | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | | ||
- | echo -e " | ||
- | echo -e "-- # %wheel ALL=(ALL) ALL" | ||
- | | ||
- | echo -e " | ||
- | echo -e "-- \" | ||
- | echo -e "-- You should replace \" | ||
- | | ||
- | echo -e " | ||
- | read VISUDOEDITOR | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | VISUDOEDITOR=" | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | | ||
- | else | ||
- | | ||
- | fi | ||
- | else | ||
- | echo -e "#Sudo will NOT be installed..." | ||
- | fi | ||
- | fi | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ######################## | ||
- | |||
- | ###################### | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | echo -e " | ||
- | echo -e "# | ||
- | echo -e "# | ||
- | echo -e " | ||
- | read INSTALLXORG | ||
- | |||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | INSTALLXORG=" | ||
- | fi | ||
- | |||
- | if [ " | ||
- | echo -e "# | ||
- | pacman -S --noconfirm xorg-server xorg-xinit xorg-utils xorg-server-utils | ||
- | XORGINSTALLED=" | ||
- | | ||
- | echo -e " | ||
- | read INSTALLMESA | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | INSTALLMESA=" | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | echo -e "# | ||
- | | ||
- | else | ||
- | echo -e " | ||
- | fi | ||
- | else | ||
- | echo -e " | ||
- | XORGINSTALLED=" | ||
- | fi | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ####################### | ||
- | |||
- | ##################### | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | if [ " | ||
- | |||
- | # Find VGA controller | ||
- | VGA=`lspci | grep " | ||
- | |||
- | echo -e " | ||
- | echo -e "#I will search pacman for possible drivers...\n" | ||
- | pacman -Ss xf86-video | grep -i " | ||
- | echo -e " | ||
- | |||
- | while true ; do | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read VIDEOCHOICE | ||
- | |||
- | case $VIDEOCHOICE in | ||
- | 1) | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read DRIVERNAME | ||
- | | ||
- | echo -e ">> | ||
- | read ATTEMPTINSTALL | ||
- | | ||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | ATTEMPTINSTALL=" | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | if [ " | ||
- | echo -e "# | ||
- | pacman -S --noconfirm " | ||
- | VIDEOINSTALLED=" | ||
- | break | ||
- | else | ||
- | echo -e " | ||
- | continue | ||
- | fi | ||
- | echo -e " | ||
- | continue | ||
- | fi | ||
- | ;; | ||
- | 2) | ||
- | echo -e " | ||
- | read CONFIRM | ||
- | | ||
- | if [ -z " | ||
- | CONFIRM=" | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | echo -e " | ||
- | pacman -S --noconfirm xf86-video-vesa | ||
- | VIDEOINSTALLED=" | ||
- | break | ||
- | else | ||
- | echo -e " | ||
- | continue | ||
- | fi | ||
- | ;; | ||
- | 3) | ||
- | echo -e " | ||
- | echo -e "--1) Nvidia Proprietary Driver (nvidia)" | ||
- | echo -e "--2) Nvidia Open Source Driver (nouveau)" | ||
- | echo -e ">> | ||
- | read NVIDIADRIVER | ||
- | | ||
- | if [ " | ||
- | echo -e " | ||
- | read CONFIRM | ||
- | | ||
- | if [ -z " | ||
- | | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | echo -e "# | ||
- | | ||
- | | ||
- | break | ||
- | else | ||
- | echo "# | ||
- | | ||
- | fi | ||
- | elif [ " | ||
- | echo -e " | ||
- | read CONFIRM | ||
- | | ||
- | if [ -z " | ||
- | | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | echo -e "# | ||
- | | ||
- | | ||
- | break | ||
- | else | ||
- | echo -e "# | ||
- | | ||
- | fi | ||
- | else | ||
- | echo -e "# | ||
- | | ||
- | fi | ||
- | ;; | ||
- | 4) | ||
- | echo -e " | ||
- | read CONFIRM | ||
- | | ||
- | if [ -z " | ||
- | CONFIRM=" | ||
- | fi | ||
- | | ||
- | if [ " | ||
- | echo -e " | ||
- | pacman -S --noconfirm xf86-video-ati | ||
- | VIDEOINSTALLED=" | ||
- | break | ||
- | else | ||
- | echo -e "# | ||
- | continue | ||
- | fi | ||
- | ;; | ||
- | 5) | ||
- | echo -e "\n#I will now list possible drivers to install with the \" | ||
- | echo -e ">> | ||
- | read | ||
- | pacman -Ss xf86-video | less | ||
- | echo -e "\n#I will now return you to the video driver menu to make your install selection." | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | continue | ||
- | ;; | ||
- | 0) | ||
- | echo -e " | ||
- | VIDEOINSTALLED=" | ||
- | break | ||
- | ;; | ||
- | *) | ||
- | echo -e " | ||
- | continue | ||
- | ;; | ||
- | esac | ||
- | done | ||
- | |||
- | else | ||
- | echo -e "# | ||
- | VIDEOINSTALLED=" | ||
- | fi | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ###################### | ||
- | |||
- | ######################## | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | if [ " | ||
- | |||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | |||
- | echo -e " | ||
- | pacman -S --noconfirm xorg-twm xterm | ||
- | |||
- | echo -e " | ||
- | pacman -S --noconfirm dbus | ||
- | |||
- | echo -e " | ||
- | sed -i ' | ||
- | |||
- | echo -e "# | ||
- | / | ||
- | |||
- | echo -e " | ||
- | echo -e "--If you see xterm consoles, type \" | ||
- | |||
- | echo -e " | ||
- | |||
- | echo -e " | ||
- | echo -e " | ||
- | |||
- | echo -e " | ||
- | read TESTX | ||
- | |||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | TESTX=" | ||
- | fi | ||
- | |||
- | if [ " | ||
- | startx | ||
- | else | ||
- | echo -e " | ||
- | fi | ||
- | | ||
- | else | ||
- | echo -e " | ||
- | |||
- | fi | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ######################### | ||
- | |||
- | ######################## | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | echo -e " | ||
- | echo -e "#It is recommended to install them." | ||
- | echo -e " | ||
- | read INSTALLFONTS | ||
- | |||
- | # if undefined (user just pressed enter) default setting: | ||
- | if [ -z " | ||
- | INSTALLFONTS=" | ||
- | fi | ||
- | |||
- | if [ " | ||
- | echo -e " | ||
- | pacman -S --noconfirm ttf-dejavu | ||
- | else | ||
- | echo -e " | ||
- | fi | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ######################## | ||
- | |||
- | ########################### | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | if [ " | ||
- | |||
- | while true ; do | ||
- | echo -e " | ||
- | echo -e "--1) KDE" | ||
- | echo -e "--2) Gnome" | ||
- | echo -e "--3) Xfce" | ||
- | echo -e "--0) Do not install any of these" | ||
- | echo -e ">> | ||
- | read DECHOICE | ||
- | |||
- | case $DECHOICE in | ||
- | 1) | ||
- | echo -e " | ||
- | echo -e "# | ||
- | | ||
- | | ||
- | |||
- | echo -e " | ||
- | |||
- | break | ||
- | ;; | ||
- | 2) | ||
- | echo -e " | ||
- | echo -e "# | ||
- | | ||
- | | ||
- | |||
- | echo -e " | ||
- | echo -e ">> | ||
- | read GNOMEEXTRA | ||
- | |||
- | if [ -z " | ||
- | | ||
- | fi | ||
- | |||
- | if [ " | ||
- | echo -e " | ||
- | | ||
- | else | ||
- | echo -e " | ||
- | fi | ||
- | |||
- | break | ||
- | ;; | ||
- | 3) | ||
- | echo -e " | ||
- | echo -e "# | ||
- | | ||
- | | ||
- | |||
- | echo -e " | ||
- | | ||
- | |||
- | #echo -e " | ||
- | # | ||
- | |||
- | echo -e " | ||
- | echo -e ">> | ||
- | read XFCEGOODIES | ||
- | |||
- | if [ -z " | ||
- | | ||
- | fi | ||
- | |||
- | if [ " | ||
- | echo -e " | ||
- | | ||
- | else | ||
- | echo -e " | ||
- | fi | ||
- | break | ||
- | ;; | ||
- | 0) | ||
- | echo -e "#No desktop environment will be installed." | ||
- | break | ||
- | ;; | ||
- | *) | ||
- | echo -e " | ||
- | | ||
- | ;; | ||
- | esac | ||
- | done | ||
- | |||
- | else | ||
- | echo -e " | ||
- | |||
- | fi | ||
- | |||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ############################ | ||
- | |||
- | ###################### | ||
- | clear | ||
- | echo -e " | ||
- | |||
- | #If user did not install a DE, skip this section | ||
- | if [ $DECHOICE = 0 ] ; then | ||
- | echo -e "\n#No Desktop Environment detected. Skipping this section..." | ||
- | else | ||
- | |||
- | echo -e "\n#In order for users to be able to start the desktop environment" | ||
- | echo -e "--a .xinitrc file needs to be created in their home folder." | ||
- | echo -e " | ||
- | echo -e "--by typing \" | ||
- | |||
- | #Check to see what DE was installed (1=KDE, | ||
- | case $DECHOICE in | ||
- | 1) #KDE | ||
- | echo -e " | ||
- | STARTX=" | ||
- | ;; | ||
- | 2) #GNOME | ||
- | echo -e " | ||
- | STARTX=" | ||
- | ;; | ||
- | 3) #XFCE | ||
- | echo -e " | ||
- | STARTX=" | ||
- | ;; | ||
- | *) #Catch-all, should not get here | ||
- | echo -e " | ||
- | exit 1 | ||
- | ;; | ||
- | esac | ||
- | |||
- | #Set Internal field separator to a literal new line (" | ||
- | IFS=' | ||
- | ' | ||
- | #Create array of all standard users (group 100) | ||
- | USERLIST=(`awk -F":" | ||
- | |||
- | #Get total number of users | ||
- | TOTALUSERS=${# | ||
- | |||
- | ###START WHILE LOOP TO SELECT A VALID USER ### | ||
- | while true ; do | ||
- | |||
- | #Display all standard users for selection | ||
- | echo -e " | ||
- | |||
- | #Loop through array, print users in columns of two | ||
- | INDEX=0 | ||
- | while [ $INDEX -lt $TOTALUSERS ] ; do | ||
- | |||
- | #We want the option 0 to be "all users", | ||
- | if [ $INDEX = 0 ] ; then | ||
- | echo -e " | ||
- | else | ||
- | #otherwise, output the index+1 for the menu selection, since we used 0 for all users | ||
- | #The index of the actual data stays the same | ||
- | echo -e " | ||
- | (( INDEX=INDEX+1 )) | ||
- | fi | ||
- | | ||
- | #If the previous mid-loop increment went equal/above the total users, break | ||
- | if [ $INDEX -ge $TOTALUSERS ] ; then break ; fi | ||
- | | ||
- | #Output 2nd column of users | ||
- | echo -e " | ||
- | (( INDEX=INDEX+1 )) | ||
- | | ||
- | done | ||
- | |||
- | echo -e " | ||
- | read WHATUSERS | ||
- | |||
- | #User just pressed ENTER, use default of all users | ||
- | if [ -z $WHATUSERS ] ; then | ||
- | WHATUSERS=0 | ||
- | break | ||
- | elif [ $WHATUSERS -ge 0 -a $WHATUSERS -le $TOTALUSERS ] ; then | ||
- | #just break, since WHATUSERS is valid | ||
- | break | ||
- | else | ||
- | echo -e "# | ||
- | echo -e ">> | ||
- | read | ||
- | continue | ||
- | fi | ||
- | |||
- | done | ||
- | ### END OF WHILE LOOP TO GET VALID USER SELECTION ### | ||
- | |||
- | #Copy skeleton .xinitrc to each users home folder and give them ownership | ||
- | #Append the correct startx command to each file | ||
- | |||
- | if [ $WHATUSERS = 0 ] ; then | ||
- | # 0 = All users: loop through user list and create the .xinitrc for each user | ||
- | for INDEX in ${USERLIST[*]} ; do | ||
- | cp / | ||
- | chown " | ||
- | echo " | ||
- | echo -e "# | ||
- | done | ||
- | else | ||
- | #Only do this for a specific user (subtract 1 to offset the all users menu category | ||
- | cp / | ||
- | chown " | ||
- | echo " | ||
- | echo -e "# | ||
- | fi | ||
- | |||
- | fi #end of initial if statement | ||
- | echo -e " | ||
- | echo -e ">> | ||
- | read | ||
- | ####################### | ||
- | |||
- | echo -e " | ||
- | exit | ||
- | </ |