From a5071c6285cd642484a4f72cc93953205f8b3324 Mon Sep 17 00:00:00 2001 From: nirenjan Date: Sat, 18 Apr 2015 19:51:26 -0700 Subject: [PATCH] Move Bash startup files to separate folder Make it easier to add new configuration to Bash by adding a .bash file to ~/.bashrc.d/. This file will be executed on startup. --- bash/bashrc.common | 47 ++----------------- .../{bashrc.aliases => bashrc.d/aliases.bash} | 9 +++- bash/bashrc.d/git_prompt.bash | 26 ++++++++++ .../lscolors.bash} | 9 +++- install | 3 +- 5 files changed, 47 insertions(+), 47 deletions(-) rename bash/{bashrc.aliases => bashrc.d/aliases.bash} (56%) create mode 100644 bash/bashrc.d/git_prompt.bash rename bash/{bashrc.lscolors => bashrc.d/lscolors.bash} (92%) diff --git a/bash/bashrc.common b/bash/bashrc.common index 0406513..6829c37 100644 --- a/bash/bashrc.common +++ b/bash/bashrc.common @@ -6,48 +6,11 @@ add_to_path() { fi } -# Define the colors used by the prompt -if [[ ! -z $TERM && "$TERM" != "dumb" ]] -then - T_B=$(tput setaf 4) # Blue - T_G=$(tput setaf 2) # Green - T_Y=$(tput setaf 3) # Yellow - T_S=$(tput sgr0) # Reset -else - # We've probably been invoked by an SSH command, there's no terminal - # to deal with. Don't bother coloring the prompt. - T_B='' - T_G='' - T_Y='' - T_S='' -fi - -# Import the Git prompt shell functions. These can be found -# @github:git/git/contrib/completion/git_prompt.sh -if [ -f $HOME/.git_prompt.sh ]; then - source $HOME/.git_prompt.sh - export PS1='\[$T_B\]\u@\h \[$T_S\][\[$T_G\]$(smartwd)$(__git_ps1 " \[$T_Y\](%s)")\[$T_S\]]\$ ' -else - export PS1='\[$T_B\]\u@\h \[$T_S\][\[$T_G\]$(smartwd)\[$T_S\]]\$ ' -fi - # Add $HOME/bin to PATH add_to_path $HOME/bin -# Add ls coloring -# Don't bother if LS_COLORS is already set -if [[ -z $LS_COLORS && -f $HOME/.bashrc.lscolors ]]; then - source $HOME/.bashrc.lscolors -fi - -# Source the common aliases across systems -if [[ -f $HOME/.bashrc.aliases ]]; then - source $HOME/.bashrc.aliases -fi - -# Keep system specific aliases in a seperate file called .aliases -# If .aliases exists it will envoked by the next line: -if [ -f $HOME/.aliases ]; then - source $HOME/.aliases -fi - +# Source all *.bash files in ~/.bashrc.d/ +for f in $(ls $HOME/.bashrc.d/*.bash) +do + source $f +done diff --git a/bash/bashrc.aliases b/bash/bashrc.d/aliases.bash similarity index 56% rename from bash/bashrc.aliases rename to bash/bashrc.d/aliases.bash index 020aa62..4bc3c1d 100644 --- a/bash/bashrc.aliases +++ b/bash/bashrc.d/aliases.bash @@ -1,3 +1,4 @@ +# Source the common aliases across systems # ls aliases alias ll='ls -l' @@ -6,9 +7,15 @@ alias tgp='time git pull' alias gf='git fetch' # Tmux aliases -# Use this to launch in 16-color mode +# Use this to launch in 256-color mode alias tmux='TERM=screen-256color-bce tmux -2 -u' # Attach to an existing tmux session alias work='TERM=screen-256color-bce tmux -2 -u attach -d' # Trigger tmux to reopen the socket if it cannot attach alias kick='pkill -USR1 -u $USER tmux' + +# Keep system specific aliases in a seperate file called .aliases +# If .aliases exists it will envoked by the next line: +if [ -f $HOME/.aliases ]; then + source $HOME/.aliases +fi diff --git a/bash/bashrc.d/git_prompt.bash b/bash/bashrc.d/git_prompt.bash new file mode 100644 index 0000000..2024cc1 --- /dev/null +++ b/bash/bashrc.d/git_prompt.bash @@ -0,0 +1,26 @@ +# Git prompt functionality + +# Define the colors used by the prompt +if [[ ! -z $TERM && "$TERM" != "dumb" ]] +then + T_B=$(tput setaf 4) # Blue + T_G=$(tput setaf 2) # Green + T_Y=$(tput setaf 3) # Yellow + T_S=$(tput sgr0) # Reset +else + # We've probably been invoked by an SSH command, there's no terminal + # to deal with. Don't bother coloring the prompt. + T_B='' + T_G='' + T_Y='' + T_S='' +fi + +# Import the Git prompt shell functions. These can be found +# @github:git/git/contrib/completion/git_prompt.sh +if [ -f $HOME/.git_prompt.sh ]; then + source $HOME/.git_prompt.sh + export PS1='\[$T_B\]\u@\h \[$T_S\][\[$T_G\]$(smartwd)$(__git_ps1 " \[$T_Y\](%s)")\[$T_S\]]\$ ' +else + export PS1='\[$T_B\]\u@\h \[$T_S\][\[$T_G\]$(smartwd)\[$T_S\]]\$ ' +fi diff --git a/bash/bashrc.lscolors b/bash/bashrc.d/lscolors.bash similarity index 92% rename from bash/bashrc.lscolors rename to bash/bashrc.d/lscolors.bash index 1bf46d6..fc484bf 100644 --- a/bash/bashrc.lscolors +++ b/bash/bashrc.d/lscolors.bash @@ -1,3 +1,9 @@ +# Add ls coloring +# Don't bother setting LS_COLORS if it's alredy set +if [[ -n "$LS_COLORS" ]] +then + return +fi if [[ "`uname`" == *"Darwin"* ]] then @@ -28,7 +34,7 @@ then # 9. executable with setguid set # 10. directory writable by others, with sticky bit # 11. directory writable by others, without sticky bit - + export LSCOLORS="ExGxbxdxCxegedabagacad" # Must use either CLICOLOR=1 or ls -G @@ -51,4 +57,3 @@ then eval `gdircolors $DCFILE` fi fi - diff --git a/install b/install index 18a2087..263aa65 100755 --- a/install +++ b/install @@ -216,8 +216,7 @@ else fi lnfile bash/bashrc.common ~/.bashrc.common -lnfile bash/bashrc.lscolors ~/.bashrc.lscolors -lnfile bash/bashrc.aliases ~/.bashrc.aliases +lnfile bash/bashrc.d ~/.bashrc.d lnfile dircolors ~/.dir_colors if [[ $PRINT_INST == 1 ]]