SLEK

Part one of some notes on automation:

Having tired of keeping ~20 shell accounts up to date with my preferred settings, I made a script to do it. Snippets which other people may find useful are:

Only doing things if an app is installed:

is_installed() {
    if type -p $1 > /dev/null ; then
        return 0
    else
        return 1
    fi
}

if is_installed mplayer ; then
    ... do mplayer specific things ...
fi

Outputting large amounts of text from the script into the config file:

cat > ~/.vimrc <<EOD
syntax enable
set autoindent
set autowrite
set nocompatible    " Use Vim defaults instead of 100% vi compatibility
set backspace=indent,eol,start  " more powerful backspacing
set ruler
set foldmethod=marker
if v:version >= 700
    set spelllang=en_gb
    set spellfile=~/.vimspell.en_gb.add
    set spellfile=~/.vimspell.add
endif
EOD

cat > ~/.inputrc <<EOD
"\e[A": history-search-backward
"\e[B": history-search-forward

set completion-ignore-case On
#set editing-mode vi
set mark-symlinked-directories On
EOD

cat > ~/.bash_logout <<EOD
#!/bin/bash

if [ "\$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
EOD
chmod +x ~/.bash_logout

Now using those, I have all my important settings stored in one shell script. In order to push settings to another host, I can run "cat slek2.sh | ssh user@host.com", which doesn't even create any temporary files on the other side of the connection \o/

(Note: the post title, and the script, are called "slek", which was originally a typo on "skel", but then got made into "shish's linux enhancement kit". Though it's also tested and working fine on solaris...)


2007-06-01 16:33:59 -0500
Previous Index Next