[opensuse] .bashrc tip for managing multiple boxes, multiple user configs
- From: "David C. Rankin" <drankinatty@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 30 Dec 2010 11:21:58 -0600
Guys,
This is nothing special, but it was a clever approach to managing your .bashrc
over multiple boxes with different user configs for root, you, and other users.
The basic approach is just to make use of includes with a couple of conditional
checks on $UID or $USER to set the environment accordingly. Here is what I did
(no doubt there are much better ways):
The .bashrc skeleton:
test -s ~/.alias && . ~/.alias || true
## functions & general aliases
. /home/admin/cnf/bashrc-gen.inc
## exports
. /home/admin/cnf/bashrc-exp.inc
## aliases for builtins
. /home/admin/cnf/bashrc-bins.inc
## general aliases
. /home/admin/cnf/bashrc-gen.inc
## Application Aliases
. /home/admin/cnf/bashrc-apps.inc
## Directory Aliases
. /home/admin/cnf/bashrc-dirs.inc
## zypper Aliases
. /home/admin/cnf/bashrc-zyp.inc
<snip>
The directory holding the include files:
11:06 phoenix:~> l1 /home/admin/cnf
bashrc-apps.inc
bashrc-bins.inc
bashrc-dirs.inc
bashrc-exp.inc
bashrc-gen.inc
bashrc-zyp.inc
bashrc-ssh.inc
Then the contents of the various files (just 2 examples):
11:08 phoenix:~> cat /home/admin/cnf/bashrc-exp.inc
## exports
[[ $UID -eq 0 ]] && {
# root prompt
export PS1="\[\e[1;34m\][\[\e[1;31m\]\A
\[\e[1;34m\]\h\[\e[0;31m\]:\w\[\e[1;34m\]] # \[\e[0m\]"
} || {
# user prompt
export PS1="\[\e[0;37m\]\A\[\e[1;34m\] \[\e[1;34m\]\h:\w> \[\e[0m\]"
}
export PATH=$PATH:/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin
export HISTFILESIZE=15000
export HISTSIZE=15000
11:09 phoenix:~> cat /home/admin/cnf/bashrc-gen.inc
## general alias functions
wgnc()
{
if [[ -z $1 ]]; then
echo -e "\n Usage: wg <filename>\t\t(runs wget --no-check-certificate
--progress=bar)\n"
else
wget --no-check-certificate --progress=bar $1
fi
}
showhist() {
[[ -z $1 ]] && { echo -e "\nUsage: hist <search term>\n"; return 1; }
history | grep $1
return 0
}
mkdircd() {
[[ -z $1 ]] && { echo -e "\nUsage: mdcd <newdir>\n"; return 1; }
mkdir -p $1 && cd $1 || { echo -e "\n Failed to make or change to directory:
$1\n"; return 1; }
return 0
}
perledinln() {
if [[ ! -f $2 ]]; then
echo -e "\n Usage ${0##*/} REGEX filename\n\n Will edit the file
in-place based on REGEX using perl\n"
else
REGEX=$1
INFILE=$2
perl -p -i -e $REGEX $INFILE
fi
}
## user specific aliases
[[ $UID -eq 0 ]] && {
alias tmsg='tail -n150 /var/log/messages'
alias tmsgf='tailf /var/log/messages'
#<snip>
}
[[ $USER == david ]] && {
alias tmsg='sudo tail -n150 /var/log/messages'
alias tmsgf='sudo tailf /var/log/messages'
#<snip>
}
## general aliases
alias difscl='diff -y --suppress-common-lines'
alias hist='showhist'
alias mdcd='mkdircd'
alias ppie='perledinln'
alias wg='wgnc' #requires 1 input
Basically, the setup allows the use of 1 .bashrc file among all boxes and users
and all you have to remember to do is rsync the /home/admin/cnf dir between
boxes (or where ever you would put that kind of stuff on your box) Then when
changes are needed, you simply edit a singe ../cnf/bashrc-xxx.inc file and rsync
the change to hosts and not have to edit 50 individual bashrc files.
I'm open if there are other ways or setup tweaks that would make this easier.
Also, let me know if you see any red flags. (I'm not concerned about users being
able to 'see' what the root bashrc includes - the users I have couldn't even
read the thing) Enjoy.
--
David C. Rankin, J.D.,P.E.
Rankin Law Firm, PLLC
510 Ochiltree Street
Nacogdoches, Texas 75961
Telephone: (936) 715-9333
Facsimile: (936) 715-9339
www.rankinlawfirm.com
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx
- Follow-Ups:
- Re: [opensuse] .bashrc tip for managing multiple boxes, multiple user configs
- From: David C. Rankin
- Re: [opensuse] .bashrc tip for managing multiple boxes, multiple user configs
- Prev by Date: [opensuse] Problem with preload in 11.3 causes very long boot times
- Next by Date: Re: [opensuse] Sound | Skype
- Previous by thread: [opensuse] Problem with preload in 11.3 causes very long boot times
- Next by thread: Re: [opensuse] .bashrc tip for managing multiple boxes, multiple user configs
- Index(es):
Relevant Pages
|