Bash Set Up

Elvenware Logo

TOC

Overview

Configure bash.

Set up prompt

Open ~/.bashrc in geany or nano.

When you see the tilda character (~), that means the home directory. So, ~/.bashrc can be shorthand for /home/bcuser/.bashrc. Files that begin with a period are "hidden" files. When using a GUI tool to browse for a hidden files, you can toggle "hidden files view" on and off with Crtl-H. At the command prompt, you can view hidden files by typing ls -a.

Search through .bashrc to about line 46 where you should find this line:

#force_color_prompt=yes

Remove the "comment symbol" from the line:

force_color_prompt=yes

Search down a bit further for code that defines your prompt. Change it to look like this:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\n\$ '
fi

The key change was to add \n near the end of the two lines that begin PS1=.

Now that you have turned on the color prompt, you need to notify the system of the change. You can do this by starting or restarting the bash shell (terminal). Or, if you are already at the terminal, then run this command:

source ~/.bashrc

You will only have to run the command one time.

When you are done, the prompt in your bash shell (terminal) should now be in color, and show the system and path on line, and the $ symbol on a second line. By starting the prompt near the left of the screen, you can avoid the situation where your commands start to wrap around to a new line when you are typing long lines of text.

If you want to see the branch of your repository when you are in a repository, try this:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\n\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\n$ '
fi

The key change is to add $(__git_ps1).

Bash Extras

Especially if you are in one of my programming courses, compare the code at the end of your ~/.bashrc file with the output from this command:

cat ~/Git/JsObjects/Utilities/SetupLinuxBox/BashrcExtras

You should append the code found in BashrcExtras to the end of your ./.bashrc file. Please use the code from BashrcExtras as it will be updated more often than this file. However, the code you want to append to the end of your file might look something like this:

if [ -z "$SSH_AUTH_SOCK" ] ; then
    eval `ssh-agent`
fi

export CHROME_BIN=/usr/bin/chromium-browser

export NODE_PATH=:$HOME/npm/lib/node_modules
export PATH="$PATH:$HOME/npm/bin:$HOME/bin/pynaoqi"
export PYTHONPATH=${PYTHONPATH}:$JSOBJECTS/Python/:$JSOBJECTS/Python/Utils/:$HOME/bin/pynao

# Java Path Support
export JAVA_HOME=/usr/lib/jvm/java-8-oracle

# Android Path Support
export ANDROID_HOME="$HOME/Android/Sdk"
export ANDROID_PLATFORM_TOOLS="$HOME/Android/Sdk/platform-tools"
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_PLATFORM_TOOLS:

Even more extras

I put this code near the end of my .bashrc file so that I don't have to run the eval ssh-agent command.

if [ -z "$SSH_AUTH_SOCK" ] ; then  
    eval `ssh-agent`  
fi

It checks to see if the agent is already loaded. If it is not loaded, then it loads it.

You could also add this line to your .bashrc to load the PEM file automatically:

ssh-add [filename].pem

So far so good. I haven't really thought about this before, but you can probably go further. Suppose you look at the list of keys you have loaded:

$ ssh-add -l  
2048 SHA256:HhGruPl4L9vdD4ePdsdf8g5mXS7Fi/kb7Xki4D3vA made on rohan-elf oct 2017 (RSA)  

Here is see that a particular key has been loaded. Once I know what it looks like when loaded, I can run a test to check if it is loaded, and to load it if it is not:

ssh-add -l | grep -q "made on rohan-elf"  
if [ $? -eq 0 ]; then  
    echo OK  
else  
    echo FAIL  
    ssh-add ~/.ssh/id_rsa  
fi

As I say, not much testing on that one, but it appears to work.

Turn it in

Take a screen shot of the color prompt and turn it in.