Core OS Index

2.5.2. Bash

Just to be sure, setup bash as default login;

        $ chsh
        

Description of configuration files;

~/.bash_profile
Minimal file that just load .profile and then .bashrc, in this order.
~/.profile
Not specifically related to bash, such as environment variables (PATH). Only for login shells (sh) or graphical applications.
~/.bashrc
Related to interactive command line, such as bash alias, editor.

2.5.2.1. Profile

Example of ~/.profile;

        PATH=~/.composer/vendor/bin:${PATH}

        export GPG_AGENT_INFO  # the env file does not contain the export statement
        export SSH_AUTH_SOCK   # enable gpg-agent for ssh
        

2.5.2.2. Bash RC

Example of ~/.bashrc;

        # If not running interactively, don't do anything
        case $- in
                *i*) ;;
                *) return;;
        esac


        # check the window size after each command and, if necessary,
        # update the values of LINES and COLUMNS.
        shopt -s checkwinsize


        # 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

        alias tmux="tmux -2"

        alias rm='rm -i'
        #alias cp='cp -i'
        alias mv='mv -i'
        # Prevents accidentally clobbering files.
        alias mkdir='mkdir -p'

        alias h='history'
        alias j='jobs -l'
        alias which='type -a'
        alias ..='cd ..'

        # Generate a password
        genpasswd () {
            local l=$1
            [ "$l" == "" ] && l=20
            tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
        }

        # Git graph log
        glog () {
            git log --graph --abbrev-commit --decorate --date=relative --all
        }

        if [[ -z "$TMUX" ]] ;then
            ID="`tmux ls | grep -vm1 attached | cut -d: -f1`" # get the id of a deattached session
            if [[ -z "$ID" ]] ;then # if not available create a new one
                tmux new-session
            else
                tmux attach-session -t "$ID" # if available attach to it
            fi
        fi
        

2.5.2.3. Bash profile

Example of ~/.bash_profile;

                #!/bin/bash
                if [ -f ~/.profile ]; then
                   source ~/.profile
                fi

                if [ -f ~/.bashrc ]; then
                   source ~/.bashrc
                fi
        
Core OS Index

This is part of the c9-doc Manual. Copyright (C) 2016 c9 team. See the file Gnu Free Documentation License for copying conditions.