Posted: . At: 7:11 PM. This was 4 years ago. Post ID: 14582
Page permalink. WordPress uses cookies, or tiny pieces of information stored on your computer, to verify who you are. There are cookies for logged in users and for commenters.
These cookies expire two weeks after they are set.


Some very useful bash scripting samples to help set up a new user.


An Aruba WIFI AP that fell out of the ceiling.
An Aruba WIFI AP that fell out of the ceiling.

Setting up a bash shell is a lot of fun, there are a lot of ways to configure the bash shell to work just the way you wish it to. Using Linux makes this very easy. The bash shell has a few files that help it perform various functions. The .bash_logout file executes when the user logs out of the session. This can be used to clear the screen on a Virtual Terminal to protect what the user was doing and hide administrator information. This is very important in a busy environment where certain information could be used to gain access to a system. Such as passwords and IP addresses and subnet info. This is why protecting such information is very important. Locking the screen when a user leaves the computer and having strong passwords and other authentication methods to protect user details and company property.

This is the .bash_logout file. This will clear the screen upon logging out.

.bash_logout
1
2
3
4
5
6
7
# ~/.bash_logout: executed by bash(1) when login shell exits.
 
# when leaving the console clear the screen to increase privacy
 
if [ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi

Add these lines to your .bashrc file to modify the behaviour of the bash history.

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
 
# append to the history file, don't overwrite it
shopt -s histappend
 
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

This .bashrc content will add a lovely bash shell prompt in color.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
 
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi
 
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac
 
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
 
if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
	# We have color support; assume it's compliant with Ecma-48
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
	# a case would tend to support setf rather than setaf.)
	color_prompt=yes
    else
	color_prompt=
    fi
fi
 
if [ "$color_prompt" = yes ]; then
    PS1="\[\033[0;31m\]\342\224\214\342\224\200\$([[ \$? != 0 ]] && echo \"[\[\033[0;31m\]\342\234\227\[\033[0;37m\]]\342\224\200\")[$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]root\[\033[01;33m\]@\[\033[01;96m\]\h'; else echo '\[\033[0;39m\]\u\[\033[01;33m\]@\[\033[01;96m\]\h'; fi)\[\033[0;31m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;31m\]]\n\[\033[0;31m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]\[\e[01;33m\]\\$\[\e[0m\]"
else
    PS1='┌──[\u@\h]─[\w]\n└──╼ \$ '
fi
 
unset color_prompt force_color_prompt
 
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\033[0;31m\]\342\224\214\342\224\200\$([[ \$? != 0 ]] && echo \"[\[\033[0;31m\]\342\234\227\[\033[0;37m\]]\342\224\200\")[$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]root\[\033[01;33m\]@\[\033[01;96m\]\h'; else echo '\[\033[0;39m\]\u\[\033[01;33m\]@\[\033[01;96m\]\h'; fi)\[\033[0;31m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;31m\]]\n\[\033[0;31m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]\[\e[01;33m\]\\$\[\e[0m\]"
    ;;
*)
    ;;
esac

This content will really help you out when setting up a new user on a Linux system. Below is my complete .bashrc file.

Installing a new Linux system is a lot of fun. With Ubuntu 20.04 it is easier than ever and it is fast to boot and very usable for everyone. The MATE desktop is a good choice if you do not like the Gnome Shell environment.

The .bashrc file above requires the fortune-mod package to be installed to get random fortunes.

┌─[jason@jason-desktop][~]
└──╼ $sudo apt install fortune-mod fortunes-ubuntu-server

Install the packages above to enjoy a random Linux tip every time you start a terminal. This is very helpful indeed.


Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.