Useful Bash defaults done right
I finally got to do some holiday clean-ups on many of (Debian) the servers I administer. And so, I got around to cleaning-up my Bash configs and finding out how everything I wanted done exactly should be done. The Right Way.
What I wanted¶
My expectations are meager:
-
screen, starting by default with each login, connecting to an already running
screen
session or starting a new one should that be unavailable; - some nice aliases (for me –
ls
andgrep
with colour;ll
forls -l
); - colourful prompt;
- system-wide default editor set to
vim
.
This isn’t much, but helps in my day-to-day sysadmin life.
How it’s achieved - for normal users¶
Starting screen by default
Just add a single line at the very end of /etc/skel/.profile
:
screen -xRR
Nice aliases
That’s all in /etc/skel/.bashrc
, just uncomment the ones you like.
Colourful prompt
The best way to do this is, again, to edit /etc/skel/.bashrc
file and simply un-comment the line:
#force_color_prompt=yes
I also set my custom colourful prompt style
if [ "$color_prompt" = yes ];
then
PS1='${debian_chroot:+($debian_chroot)}\[echo "\w" | sed "s/\//\[\e[0;34m\](\e[1;36m\]\u\[\e[0;37m\]@\[\e[0;36m\]\h\[\e[0;37m\]:\[\e[1;34m\]$()\/\[)\[\e[1;37m\](\e[1;34m\]/g")\$\[\e[0m\] '
Vim as the system default editor
That will actually work for all users, including root
. Just install vim
and (as root
) run:
update-alternatives --config editor
Therein, select the editor of choice. Done.
Every single new user on the system will have the above as defaults. However, remember to copy /etc/skel/.profile
and /etc/skel/.bashrc
to homedirs of any users already present in the system!
Some tweaks for root¶
The root
account does not use /etc/skel/
files as base, so we need to edit /root/.bashrc
and put there the aliases we need, etc. Also, using screen
auto-startup with root
doesn’t seem to be a good idea, so I just pass on that.
As for root
user’s colourful prompt, I want it to be nice and red, but without the (superfluous) username. So, here it is:
PS1='${debian_chroot:+($debian_chroot)}\[echo "\w" | sed "s/\//\[\e[0;34m\](\e[0;31m\]\h\[\e[0;33m\]:\[\e[1;34m\]$()\/\[)\[\e[1;31m\](\e[1;34m\]/g")\$\[\e[0m\] '
That’s it.