--- title: >- Useful Bash defaults done right date: 2011-12-25 19:55 modified: 2011-12-25 19:55 lang: en authors: rysiek tags: - ancient - howto status: published pinned: false --- I finally got to do some holiday clean-ups on many of ([Debian](http://www.debian.org/)) the servers I administer. And so, I got around to cleaning-up my [Bash](http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29) configs and finding out how everything I wanted done exactly should be done. *The Right Way*. ## What I wanted My expectations are meager: - [screen](http://en.wikipedia.org/wiki/GNU_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` and `grep` with colour; `ll` for `ls -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.