From: Jannik Zander Date: Sun, 22 May 2016 18:25:37 +0000 (+0200) Subject: Divide bash files into profile ond rc X-Git-Url: https://git.zndr.dk/?a=commitdiff_plain;h=0e1fe12b322dd5610d02f5ce5f7de3e2f6e5cd26;p=dotfiles.git Divide bash files into profile ond rc --- diff --git a/.bash_profile b/.bash_profile new file mode 100644 index 0000000..f8f9564 --- /dev/null +++ b/.bash_profile @@ -0,0 +1 @@ +[ -f ~/.profile ] && source ~/.profile diff --git a/.bashrc b/.bashrc index 3294677..cef81e4 100644 --- a/.bashrc +++ b/.bashrc @@ -1,7 +1,9 @@ # User dependent .bashrc file # If not running interactively, don't do anything -[[ "$-" != *i* ]] && return +[[ -z "$PS1" ]] && return + +#[ -f /etc/bash ] && source /etc/bash; # Load settings for file in ${HOME}/.config/bash/rc/*; do diff --git a/.config/bash/rc/completion b/.config/bash/rc/completion index 11c6d16..a96031f 100644 --- a/.config/bash/rc/completion +++ b/.config/bash/rc/completion @@ -4,7 +4,7 @@ # Enable tab completion for `g` by marking it as an alias for `git` if type _git &> /dev/null; then - complete -o default -o nospace -F _git g; + complete -o default -o nospace -F _git g; fi; # Add tab completion for SSH hostnames based on ~/.ssh/config, ignoring wildcards diff --git a/.config/bash/rc/git-prompt.sh b/.config/bash/rc/git-prompt.sh deleted file mode 100644 index 29ec012..0000000 --- a/.config/bash/rc/git-prompt.sh +++ /dev/null @@ -1,531 +0,0 @@ -# bash/zsh git prompt support -# -# Copyright (C) 2006,2007 Shawn O. Pearce -# Distributed under the GNU General Public License, version 2.0. -# -# This script allows you to see repository status in your prompt. -# -# To enable: -# -# 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh). -# 2) Add the following line to your .bashrc/.zshrc: -# source ~/.git-prompt.sh -# 3a) Change your PS1 to call __git_ps1 as -# command-substitution: -# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' -# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' -# the optional argument will be used as format string. -# 3b) Alternatively, for a slightly faster prompt, __git_ps1 can -# be used for PROMPT_COMMAND in Bash or for precmd() in Zsh -# with two parameters,
 and , which are strings
-#        you would put in $PS1 before and after the status string
-#        generated by the git-prompt machinery.  e.g.
-#        Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
-#          will show username, at-sign, host, colon, cwd, then
-#          various status string, followed by dollar and SP, as
-#          your prompt.
-#        ZSH:  precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
-#          will show username, pipe, then various status string,
-#          followed by colon, cwd, dollar and SP, as your prompt.
-#        Optionally, you can supply a third argument with a printf
-#        format string to finetune the output of the branch status
-#
-# The repository status will be displayed only if you are currently in a
-# git repository. The %s token is the placeholder for the shown status.
-#
-# The prompt status always includes the current branch name.
-#
-# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
-# unstaged (*) and staged (+) changes will be shown next to the branch
-# name.  You can configure this per-repository with the
-# bash.showDirtyState variable, which defaults to true once
-# GIT_PS1_SHOWDIRTYSTATE is enabled.
-#
-# You can also see if currently something is stashed, by setting
-# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
-# then a '$' will be shown next to the branch name.
-#
-# If you would like to see if there're untracked files, then you can set
-# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
-# files, then a '%' will be shown next to the branch name.  You can
-# configure this per-repository with the bash.showUntrackedFiles
-# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
-# enabled.
-#
-# If you would like to see the difference between HEAD and its upstream,
-# set GIT_PS1_SHOWUPSTREAM="auto".  A "<" indicates you are behind, ">"
-# indicates you are ahead, "<>" indicates you have diverged and "="
-# indicates that there is no difference. You can further control
-# behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
-# of values:
-#
-#     verbose       show number of commits ahead/behind (+/-) upstream
-#     name          if verbose, then also show the upstream abbrev name
-#     legacy        don't use the '--count' option available in recent
-#                   versions of git-rev-list
-#     git           always compare HEAD to @{upstream}
-#     svn           always compare HEAD to your SVN upstream
-#
-# You can change the separator between the branch name and the above
-# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
-# is SP.
-#
-# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
-# find one, or @{upstream} otherwise.  Once you have set
-# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
-# setting the bash.showUpstream config variable.
-#
-# If you would like to see more information about the identity of
-# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
-# to one of these values:
-#
-#     contains      relative to newer annotated tag (v1.6.3.2~35)
-#     branch        relative to newer tag or branch (master~4)
-#     describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
-#     default       exactly matching tag
-#
-# If you would like a colored hint about the current dirty state, set
-# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
-# the colored output of "git status -sb" and are available only when
-# using __git_ps1 for PROMPT_COMMAND or precmd.
-#
-# If you would like __git_ps1 to do nothing in the case when the current
-# directory is set up to be ignored by git, then set
-# GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
-# repository level by setting bash.hideIfPwdIgnored to "false".
-
-# check whether printf supports -v
-__git_printf_supports_v=
-printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
-
-# stores the divergence from upstream in $p
-# used by GIT_PS1_SHOWUPSTREAM
-__git_ps1_show_upstream ()
-{
-  local key value
-  local svn_remote svn_url_pattern count n
-  local upstream=git legacy="" verbose="" name=""
-
-  svn_remote=()
-  # get some config options from git-config
-  local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
-  while read -r key value; do
-    case "$key" in
-    bash.showupstream)
-      GIT_PS1_SHOWUPSTREAM="$value"
-      if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
-        p=""
-        return
-      fi
-      ;;
-    svn-remote.*.url)
-      svn_remote[$((${#svn_remote[@]} + 1))]="$value"
-      svn_url_pattern="$svn_url_pattern\\|$value"
-      upstream=svn+git # default upstream is SVN if available, else git
-      ;;
-    esac
-  done <<< "$output"
-
-  # parse configuration values
-  for option in ${GIT_PS1_SHOWUPSTREAM}; do
-    case "$option" in
-    git|svn) upstream="$option" ;;
-    verbose) verbose=1 ;;
-    legacy)  legacy=1  ;;
-    name)    name=1 ;;
-    esac
-  done
-
-  # Find our upstream
-  case "$upstream" in
-  git)    upstream="@{upstream}" ;;
-  svn*)
-    # get the upstream from the "git-svn-id: ..." in a commit message
-    # (git-svn uses essentially the same procedure internally)
-    local -a svn_upstream
-    svn_upstream=($(git log --first-parent -1 \
-          --grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
-    if [[ 0 -ne ${#svn_upstream[@]} ]]; then
-      svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
-      svn_upstream=${svn_upstream%@*}
-      local n_stop="${#svn_remote[@]}"
-      for ((n=1; n <= n_stop; n++)); do
-        svn_upstream=${svn_upstream#${svn_remote[$n]}}
-      done
-
-      if [[ -z "$svn_upstream" ]]; then
-        # default branch name for checkouts with no layout:
-        upstream=${GIT_SVN_ID:-git-svn}
-      else
-        upstream=${svn_upstream#/}
-      fi
-    elif [[ "svn+git" = "$upstream" ]]; then
-      upstream="@{upstream}"
-    fi
-    ;;
-  esac
-
-  # Find how many commits we are ahead/behind our upstream
-  if [[ -z "$legacy" ]]; then
-    count="$(git rev-list --count --left-right \
-        "$upstream"...HEAD 2>/dev/null)"
-  else
-    # produce equivalent output to --count for older versions of git
-    local commits
-    if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"
-    then
-      local commit behind=0 ahead=0
-      for commit in $commits
-      do
-        case "$commit" in
-        "<"*) ((behind++)) ;;
-        *)    ((ahead++))  ;;
-        esac
-      done
-      count="$behind  $ahead"
-    else
-      count=""
-    fi
-  fi
-
-  # calculate the result
-  if [[ -z "$verbose" ]]; then
-    case "$count" in
-    "") # no upstream
-      p="" ;;
-    "0  0") # equal to upstream
-      p="=" ;;
-    "0  "*) # ahead of upstream
-      p=">" ;;
-    *"  0") # behind upstream
-      p="<" ;;
-    *)      # diverged from upstream
-      p="<>" ;;
-    esac
-  else
-    case "$count" in
-    "") # no upstream
-      p="" ;;
-    "0  0") # equal to upstream
-      p=" u=" ;;
-    "0  "*) # ahead of upstream
-      p=" u+${count#0 }" ;;
-    *"  0") # behind upstream
-      p=" u-${count%  0}" ;;
-    *)      # diverged from upstream
-      p=" u+${count#* }-${count%  *}" ;;
-    esac
-    if [[ -n "$count" && -n "$name" ]]; then
-      __git_ps1_upstream_name=$(git rev-parse \
-        --abbrev-ref "$upstream" 2>/dev/null)
-      if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
-        p="$p \${__git_ps1_upstream_name}"
-      else
-        p="$p ${__git_ps1_upstream_name}"
-        # not needed anymore; keep user's
-        # environment clean
-        unset __git_ps1_upstream_name
-      fi
-    fi
-  fi
-
-}
-
-# Helper function that is meant to be called from __git_ps1.  It
-# injects color codes into the appropriate gitstring variables used
-# to build a gitstring.
-__git_ps1_colorize_gitstring ()
-{
-  if [[ -n ${ZSH_VERSION-} ]]; then
-    local c_red='%F{red}'
-    local c_green='%F{green}'
-    local c_lblue='%F{blue}'
-    local c_clear='%f'
-  else
-    # Using \[ and \] around colors is necessary to prevent
-    # issues with command line editing/browsing/completion!
-    local c_red='\[\e[31m\]'
-    local c_green='\[\e[32m\]'
-    local c_lblue='\[\e[1;34m\]'
-    local c_clear='\[\e[0m\]'
-  fi
-  local bad_color=$c_red
-  local ok_color=$c_green
-  local flags_color="$c_lblue"
-
-  local branch_color=""
-  if [ $detached = no ]; then
-    branch_color="$ok_color"
-  else
-    branch_color="$bad_color"
-  fi
-  c="$branch_color$c"
-
-  z="$c_clear$z"
-  if [ "$w" = "*" ]; then
-    w="$bad_color$w"
-  fi
-  if [ -n "$i" ]; then
-    i="$ok_color$i"
-  fi
-  if [ -n "$s" ]; then
-    s="$flags_color$s"
-  fi
-  if [ -n "$u" ]; then
-    u="$bad_color$u"
-  fi
-  r="$c_clear$r"
-}
-
-__git_eread ()
-{
-  local f="$1"
-  shift
-  test -r "$f" && read "$@" <"$f"
-}
-
-# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
-# when called from PS1 using command substitution
-# in this mode it prints text to add to bash PS1 prompt (includes branch name)
-#
-# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
-# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
-# when two arguments are given, the first is prepended and the second appended
-# to the state string when assigned to PS1.
-# The optional third parameter will be used as printf format string to further
-# customize the output of the git-status string.
-# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
-__git_ps1 ()
-{
-  # preserve exit status
-  local exit=$?
-  local pcmode=no
-  local detached=no
-  local ps1pc_start='\u@\h:\w '
-  local ps1pc_end='\$ '
-  local printf_format=' (%s)'
-
-  case "$#" in
-    2|3)  pcmode=yes
-      ps1pc_start="$1"
-      ps1pc_end="$2"
-      printf_format="${3:-$printf_format}"
-      # set PS1 to a plain prompt so that we can
-      # simply return early if the prompt should not
-      # be decorated
-      PS1="$ps1pc_start$ps1pc_end"
-    ;;
-    0|1)  printf_format="${1:-$printf_format}"
-    ;;
-    *)  return $exit
-    ;;
-  esac
-
-  # ps1_expanded:  This variable is set to 'yes' if the shell
-  # subjects the value of PS1 to parameter expansion:
-  #
-  #   * bash does unless the promptvars option is disabled
-  #   * zsh does not unless the PROMPT_SUBST option is set
-  #   * POSIX shells always do
-  #
-  # If the shell would expand the contents of PS1 when drawing
-  # the prompt, a raw ref name must not be included in PS1.
-  # This protects the user from arbitrary code execution via
-  # specially crafted ref names.  For example, a ref named
-  # 'refs/heads/$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' might cause the
-  # shell to execute 'sudo rm -rf /' when the prompt is drawn.
-  #
-  # Instead, the ref name should be placed in a separate global
-  # variable (in the __git_ps1_* namespace to avoid colliding
-  # with the user's environment) and that variable should be
-  # referenced from PS1.  For example:
-  #
-  #     __git_ps1_foo=$(do_something_to_get_ref_name)
-  #     PS1="...stuff...\${__git_ps1_foo}...stuff..."
-  #
-  # If the shell does not expand the contents of PS1, the raw
-  # ref name must be included in PS1.
-  #
-  # The value of this variable is only relevant when in pcmode.
-  #
-  # Assume that the shell follows the POSIX specification and
-  # expands PS1 unless determined otherwise.  (This is more
-  # likely to be correct if the user has a non-bash, non-zsh
-  # shell and safer than the alternative if the assumption is
-  # incorrect.)
-  #
-  local ps1_expanded=yes
-  [ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
-  [ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
-
-  local repo_info rev_parse_exit_code
-  repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
-    --is-bare-repository --is-inside-work-tree \
-    --short HEAD 2>/dev/null)"
-  rev_parse_exit_code="$?"
-
-  if [ -z "$repo_info" ]; then
-    return $exit
-  fi
-
-  local short_sha
-  if [ "$rev_parse_exit_code" = "0" ]; then
-    short_sha="${repo_info##*$'\n'}"
-    repo_info="${repo_info%$'\n'*}"
-  fi
-  local inside_worktree="${repo_info##*$'\n'}"
-  repo_info="${repo_info%$'\n'*}"
-  local bare_repo="${repo_info##*$'\n'}"
-  repo_info="${repo_info%$'\n'*}"
-  local inside_gitdir="${repo_info##*$'\n'}"
-  local g="${repo_info%$'\n'*}"
-
-  if [ "true" = "$inside_worktree" ] &&
-     [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] &&
-     [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] &&
-     git check-ignore -q .
-  then
-    return $exit
-  fi
-
-  local r=""
-  local b=""
-  local step=""
-  local total=""
-  if [ -d "$g/rebase-merge" ]; then
-    __git_eread "$g/rebase-merge/head-name" b
-    __git_eread "$g/rebase-merge/msgnum" step
-    __git_eread "$g/rebase-merge/end" total
-    if [ -f "$g/rebase-merge/interactive" ]; then
-      r="|REBASE-i"
-    else
-      r="|REBASE-m"
-    fi
-  else
-    if [ -d "$g/rebase-apply" ]; then
-      __git_eread "$g/rebase-apply/next" step
-      __git_eread "$g/rebase-apply/last" total
-      if [ -f "$g/rebase-apply/rebasing" ]; then
-        __git_eread "$g/rebase-apply/head-name" b
-        r="|REBASE"
-      elif [ -f "$g/rebase-apply/applying" ]; then
-        r="|AM"
-      else
-        r="|AM/REBASE"
-      fi
-    elif [ -f "$g/MERGE_HEAD" ]; then
-      r="|MERGING"
-    elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
-      r="|CHERRY-PICKING"
-    elif [ -f "$g/REVERT_HEAD" ]; then
-      r="|REVERTING"
-    elif [ -f "$g/BISECT_LOG" ]; then
-      r="|BISECTING"
-    fi
-
-    if [ -n "$b" ]; then
-      :
-    elif [ -h "$g/HEAD" ]; then
-      # symlink symbolic ref
-      b="$(git symbolic-ref HEAD 2>/dev/null)"
-    else
-      local head=""
-      if ! __git_eread "$g/HEAD" head; then
-        return $exit
-      fi
-      # is it a symbolic ref?
-      b="${head#ref: }"
-      if [ "$head" = "$b" ]; then
-        detached=yes
-        b="$(
-        case "${GIT_PS1_DESCRIBE_STYLE-}" in
-        (contains)
-          git describe --contains HEAD ;;
-        (branch)
-          git describe --contains --all HEAD ;;
-        (describe)
-          git describe HEAD ;;
-        (* | default)
-          git describe --tags --exact-match HEAD ;;
-        esac 2>/dev/null)" ||
-
-        b="$short_sha..."
-        b="($b)"
-      fi
-    fi
-  fi
-
-  if [ -n "$step" ] && [ -n "$total" ]; then
-    r="$r $step/$total"
-  fi
-
-  local w=""
-  local i=""
-  local s=""
-  local u=""
-  local c=""
-  local p=""
-
-  if [ "true" = "$inside_gitdir" ]; then
-    if [ "true" = "$bare_repo" ]; then
-      c="BARE:"
-    else
-      b="GIT_DIR!"
-    fi
-  elif [ "true" = "$inside_worktree" ]; then
-    if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
-       [ "$(git config --bool bash.showDirtyState)" != "false" ]
-    then
-      git diff --no-ext-diff --quiet || w="*"
-      git diff --no-ext-diff --cached --quiet || i="+"
-      if [ -z "$short_sha" ] && [ -z "$i" ]; then
-        i="#"
-      fi
-    fi
-    if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
-       git rev-parse --verify --quiet refs/stash >/dev/null
-    then
-      s="$"
-    fi
-
-    if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
-       [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
-       git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
-    then
-      u="%${ZSH_VERSION+%}"
-    fi
-
-    if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
-      __git_ps1_show_upstream
-    fi
-  fi
-
-  local z="${GIT_PS1_STATESEPARATOR-" "}"
-
-  # NO color option unless in PROMPT_COMMAND mode
-  if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
-    __git_ps1_colorize_gitstring
-  fi
-
-  b=${b##refs/heads/}
-  if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
-    __git_ps1_branch_name=$b
-    b="\${__git_ps1_branch_name}"
-  fi
-
-  local f="$w$i$s$u"
-  local gitstring="$c$b${f:+$z$f}$r$p"
-
-  if [ $pcmode = yes ]; then
-    if [ "${__git_printf_supports_v-}" != yes ]; then
-      gitstring=$(printf -- "$printf_format" "$gitstring")
-    else
-      printf -v gitstring -- "$printf_format" "$gitstring"
-    fi
-    PS1="$ps1pc_start$gitstring$ps1pc_end"
-  else
-    printf -- "$printf_format" "$gitstring"
-  fi
-
-  return $exit
-}
diff --git a/.config/bash/rc/options b/.config/bash/rc/options
index 22beba3..284a673 100644
--- a/.config/bash/rc/options
+++ b/.config/bash/rc/options
@@ -11,12 +11,9 @@ shopt -s cdspell;
 # * `autocd`, e.g. `**/qux` will enter `./foo/bar/baz/qux`
 # * Recursive globbing, e.g. `echo **/*.txt`
 for option in autocd globstar; do
-	shopt -s "$option" 2> /dev/null;
+  shopt -s "$option" 2> /dev/null;
 done;
 
-# File creation
-umask 022
-
 # Don't use ^D to exit
 set -o ignoreeof
 set -o vi
diff --git a/.config/bash/rc/prompt b/.config/bash/rc/prompt
deleted file mode 100644
index bca13df..0000000
--- a/.config/bash/rc/prompt
+++ /dev/null
@@ -1,76 +0,0 @@
-# Bash git prompt solarized
-
-if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
-        export TERM='gnome-256color';
-elif infocmp xterm-256color >/dev/null 2>&1; then
-        export TERM='xterm-256color';
-fi;
-
-if tput setaf 1 &> /dev/null; then
-	tput sgr0; # reset colors
-	bold=$(tput bold);
-	reset=$(tput sgr0);
-	black=$(tput setaf 0);
-	blue=$(tput setaf 33);
-	cyan=$(tput setaf 37);
-	green=$(tput setaf 64);
-	orange=$(tput setaf 166);
-	purple=$(tput setaf 125);
-	red=$(tput setaf 124);
-	violet=$(tput setaf 61);
-	white=$(tput setaf 15);
-	yellow=$(tput setaf 136);
-else
-	bold='';
-	reset="\e[0m";
-	black="\e[1;30m";
-	blue="\e[1;34m";
-	cyan="\e[1;36m";
-	green="\e[1;32m";
-	orange="\e[1;33m";
-	purple="\e[1;35m";
-	red="\e[1;31m";
-	violet="\e[1;35m";
-	white="\e[1;37m";
-	yellow="\e[1;33m";
-fi;
-
-# Highlight the user name when logged in as root.
-if [[ "${USER}" == "root" ]]; then
-	userStyle="${red}";
-else
-	userStyle="${orange}";
-fi;
-
-# Highlight the hostname when connected via SSH.
-if [[ "${SSH_TTY}" ]]; then
-	hostStyle="${bold}${red}";
-else
-	hostStyle="${yellow}";
-fi;
-
-# Enabling any of these options will slow down the prompt
-export GIT_PS1_SHOWDIRTYSTATE=1
-export GIT_PS1_SHOWSTASHSTATE=1
-export GIT_PS1_SHOWUNTRACKEDFILES=1
-export GIT_PS1_SHOWUPSTREAM=1
-
-# Set git prompt
-# Set the terminal title to the current working directory.
-PS1='\[\033]0;\w\007\]';
-PS1+='\[${bold}\]';
-PS1+='\r'; # newline
-PS1+='\[${userStyle}\]\u '; # username
-PS1+='\[${white}\]at ';
-PS1+='\[${hostStyle}\]\h '; # at host
-PS1+='\[${white}\]in ';
-PS1+='\[${green}\]\w '; # in working directory
-PS1+="$(__git_ps1 '\[${white}\]on \[${violet}\]%s\[${blue}\]')";  # on branch
-PS1+='\n'; # newline
-PS1+='\[${white}\]\$ '; # `$`
-PS1+='\[${reset}\]'; # reset color
-export PS1;
-
-PS2='\[${yellow}\]→ '; # `→`
-PS2+='\[${reset}\]'; # reset color
-export PS2;
diff --git a/.config/profile/rc/environ.sh b/.config/profile/rc/environ.sh
new file mode 100644
index 0000000..fbd8d35
--- /dev/null
+++ b/.config/profile/rc/environ.sh
@@ -0,0 +1,44 @@
+export USERNAME=$LOGNAME
+export HOSTNAME=`hostname`
+#echo Welcome $USERNAME. You are on Server: $HOSTNAME !!!
+
+# Set defaults
+export SHELL=bash
+export EDITOR=vim;
+export VISUAL=vim;
+export PAGER=less
+#export MYVIMRC="$HOME/.config/vim/vimrc"
+
+# Larger bash history (allow 32³ entries; default is 500)
+export HISTSIZE=32768;
+export HISTFILESIZE=$HISTSIZE;
+export HISTCONTROL=ignoreboth;
+# Make some commands not show up in history
+export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help";
+export HISTFILE="$HOME/.cache/bash/history";
+
+# Whenever displaying the prompt, write the previous line to disk
+export PROMPT_COMMAND="history -a";
+# Prefer US English and use UTF-8
+# export LANG=$(locale -uU)
+export LANG="en_US.UTF-8";
+export LC_ALL="en_US.UTF-8";
+
+# Highlight section titles in manual pages
+export LESS_TERMCAP_md="${yellow}";
+
+# Don’t clear the screen after quitting a manual page
+export MANPAGER="less -X";
+
+# Always enable colored `grep` output
+#export GREP_OPTIONS="--color=auto";
+
+# Set up syntax highlighting for 'less' (requires source-highlight package)
+# See http://www.gnu.org/software/src-highlite/source-highlight.html
+# export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
+export LESS=-eFRX
+
+# Tell lynx where the color settings are that were adjusted for the
+# Solarized color scheme
+export LYNX_LSS=$HOME/.config/lynx.lss
+
diff --git a/.config/profile/rc/exports b/.config/profile/rc/exports
deleted file mode 100644
index 4e7c412..0000000
--- a/.config/profile/rc/exports
+++ /dev/null
@@ -1,39 +0,0 @@
-
-# Make vim the default editor
-export EDITOR="vim";
-export VISUAL="vim";
-#export MYVIMRC="$HOME/.config/vim/vimrc"
-
-# Larger bash history (allow 32³ entries; default is 500)
-export HISTSIZE=32768;
-export HISTFILESIZE=$HISTSIZE;
-export HISTCONTROL=ignoreboth;
-# Make some commands not show up in history
-export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help";
-export HISTFILE="$HOME/.cache/bash/history";
-# Whenever displaying the prompt, write the previous line to disk
-export PROMPT_COMMAND="history -a";
-
-# Prefer US English and use UTF-8
-# export LANG=$(locale -uU)
-export LANG="en_US.UTF-8";
-export LC_ALL="en_US.UTF-8";
-
-# Highlight section titles in manual pages
-export LESS_TERMCAP_md="${yellow}";
-
-# Don’t clear the screen after quitting a manual page
-export MANPAGER="less -X";
-
-# Always enable colored `grep` output
-#export GREP_OPTIONS="--color=auto";
-
-# Set up syntax highlighting for 'less' (requires source-highlight package)
-# See http://www.gnu.org/software/src-highlite/source-highlight.html
-# export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
-export LESS=-eFRX
-
-# Tell lynx where the color settings are that were adjusted for the
-# Solarized color scheme
-export LYNX_LSS=$HOME/.config/lynx.lss
-
diff --git a/.config/profile/rc/git-prompt.sh b/.config/profile/rc/git-prompt.sh
new file mode 100644
index 0000000..29ec012
--- /dev/null
+++ b/.config/profile/rc/git-prompt.sh
@@ -0,0 +1,531 @@
+# bash/zsh git prompt support
+#
+# Copyright (C) 2006,2007 Shawn O. Pearce 
+# Distributed under the GNU General Public License, version 2.0.
+#
+# This script allows you to see repository status in your prompt.
+#
+# To enable:
+#
+#    1) Copy this file to somewhere (e.g. ~/.git-prompt.sh).
+#    2) Add the following line to your .bashrc/.zshrc:
+#        source ~/.git-prompt.sh
+#    3a) Change your PS1 to call __git_ps1 as
+#        command-substitution:
+#        Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
+#        ZSH:  setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
+#        the optional argument will be used as format string.
+#    3b) Alternatively, for a slightly faster prompt, __git_ps1 can
+#        be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
+#        with two parameters, 
 and , which are strings
+#        you would put in $PS1 before and after the status string
+#        generated by the git-prompt machinery.  e.g.
+#        Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
+#          will show username, at-sign, host, colon, cwd, then
+#          various status string, followed by dollar and SP, as
+#          your prompt.
+#        ZSH:  precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
+#          will show username, pipe, then various status string,
+#          followed by colon, cwd, dollar and SP, as your prompt.
+#        Optionally, you can supply a third argument with a printf
+#        format string to finetune the output of the branch status
+#
+# The repository status will be displayed only if you are currently in a
+# git repository. The %s token is the placeholder for the shown status.
+#
+# The prompt status always includes the current branch name.
+#
+# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
+# unstaged (*) and staged (+) changes will be shown next to the branch
+# name.  You can configure this per-repository with the
+# bash.showDirtyState variable, which defaults to true once
+# GIT_PS1_SHOWDIRTYSTATE is enabled.
+#
+# You can also see if currently something is stashed, by setting
+# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
+# then a '$' will be shown next to the branch name.
+#
+# If you would like to see if there're untracked files, then you can set
+# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
+# files, then a '%' will be shown next to the branch name.  You can
+# configure this per-repository with the bash.showUntrackedFiles
+# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
+# enabled.
+#
+# If you would like to see the difference between HEAD and its upstream,
+# set GIT_PS1_SHOWUPSTREAM="auto".  A "<" indicates you are behind, ">"
+# indicates you are ahead, "<>" indicates you have diverged and "="
+# indicates that there is no difference. You can further control
+# behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
+# of values:
+#
+#     verbose       show number of commits ahead/behind (+/-) upstream
+#     name          if verbose, then also show the upstream abbrev name
+#     legacy        don't use the '--count' option available in recent
+#                   versions of git-rev-list
+#     git           always compare HEAD to @{upstream}
+#     svn           always compare HEAD to your SVN upstream
+#
+# You can change the separator between the branch name and the above
+# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
+# is SP.
+#
+# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
+# find one, or @{upstream} otherwise.  Once you have set
+# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
+# setting the bash.showUpstream config variable.
+#
+# If you would like to see more information about the identity of
+# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
+# to one of these values:
+#
+#     contains      relative to newer annotated tag (v1.6.3.2~35)
+#     branch        relative to newer tag or branch (master~4)
+#     describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
+#     default       exactly matching tag
+#
+# If you would like a colored hint about the current dirty state, set
+# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
+# the colored output of "git status -sb" and are available only when
+# using __git_ps1 for PROMPT_COMMAND or precmd.
+#
+# If you would like __git_ps1 to do nothing in the case when the current
+# directory is set up to be ignored by git, then set
+# GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
+# repository level by setting bash.hideIfPwdIgnored to "false".
+
+# check whether printf supports -v
+__git_printf_supports_v=
+printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
+
+# stores the divergence from upstream in $p
+# used by GIT_PS1_SHOWUPSTREAM
+__git_ps1_show_upstream ()
+{
+  local key value
+  local svn_remote svn_url_pattern count n
+  local upstream=git legacy="" verbose="" name=""
+
+  svn_remote=()
+  # get some config options from git-config
+  local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
+  while read -r key value; do
+    case "$key" in
+    bash.showupstream)
+      GIT_PS1_SHOWUPSTREAM="$value"
+      if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
+        p=""
+        return
+      fi
+      ;;
+    svn-remote.*.url)
+      svn_remote[$((${#svn_remote[@]} + 1))]="$value"
+      svn_url_pattern="$svn_url_pattern\\|$value"
+      upstream=svn+git # default upstream is SVN if available, else git
+      ;;
+    esac
+  done <<< "$output"
+
+  # parse configuration values
+  for option in ${GIT_PS1_SHOWUPSTREAM}; do
+    case "$option" in
+    git|svn) upstream="$option" ;;
+    verbose) verbose=1 ;;
+    legacy)  legacy=1  ;;
+    name)    name=1 ;;
+    esac
+  done
+
+  # Find our upstream
+  case "$upstream" in
+  git)    upstream="@{upstream}" ;;
+  svn*)
+    # get the upstream from the "git-svn-id: ..." in a commit message
+    # (git-svn uses essentially the same procedure internally)
+    local -a svn_upstream
+    svn_upstream=($(git log --first-parent -1 \
+          --grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
+    if [[ 0 -ne ${#svn_upstream[@]} ]]; then
+      svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
+      svn_upstream=${svn_upstream%@*}
+      local n_stop="${#svn_remote[@]}"
+      for ((n=1; n <= n_stop; n++)); do
+        svn_upstream=${svn_upstream#${svn_remote[$n]}}
+      done
+
+      if [[ -z "$svn_upstream" ]]; then
+        # default branch name for checkouts with no layout:
+        upstream=${GIT_SVN_ID:-git-svn}
+      else
+        upstream=${svn_upstream#/}
+      fi
+    elif [[ "svn+git" = "$upstream" ]]; then
+      upstream="@{upstream}"
+    fi
+    ;;
+  esac
+
+  # Find how many commits we are ahead/behind our upstream
+  if [[ -z "$legacy" ]]; then
+    count="$(git rev-list --count --left-right \
+        "$upstream"...HEAD 2>/dev/null)"
+  else
+    # produce equivalent output to --count for older versions of git
+    local commits
+    if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"
+    then
+      local commit behind=0 ahead=0
+      for commit in $commits
+      do
+        case "$commit" in
+        "<"*) ((behind++)) ;;
+        *)    ((ahead++))  ;;
+        esac
+      done
+      count="$behind  $ahead"
+    else
+      count=""
+    fi
+  fi
+
+  # calculate the result
+  if [[ -z "$verbose" ]]; then
+    case "$count" in
+    "") # no upstream
+      p="" ;;
+    "0  0") # equal to upstream
+      p="=" ;;
+    "0  "*) # ahead of upstream
+      p=">" ;;
+    *"  0") # behind upstream
+      p="<" ;;
+    *)      # diverged from upstream
+      p="<>" ;;
+    esac
+  else
+    case "$count" in
+    "") # no upstream
+      p="" ;;
+    "0  0") # equal to upstream
+      p=" u=" ;;
+    "0  "*) # ahead of upstream
+      p=" u+${count#0 }" ;;
+    *"  0") # behind upstream
+      p=" u-${count%  0}" ;;
+    *)      # diverged from upstream
+      p=" u+${count#* }-${count%  *}" ;;
+    esac
+    if [[ -n "$count" && -n "$name" ]]; then
+      __git_ps1_upstream_name=$(git rev-parse \
+        --abbrev-ref "$upstream" 2>/dev/null)
+      if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
+        p="$p \${__git_ps1_upstream_name}"
+      else
+        p="$p ${__git_ps1_upstream_name}"
+        # not needed anymore; keep user's
+        # environment clean
+        unset __git_ps1_upstream_name
+      fi
+    fi
+  fi
+
+}
+
+# Helper function that is meant to be called from __git_ps1.  It
+# injects color codes into the appropriate gitstring variables used
+# to build a gitstring.
+__git_ps1_colorize_gitstring ()
+{
+  if [[ -n ${ZSH_VERSION-} ]]; then
+    local c_red='%F{red}'
+    local c_green='%F{green}'
+    local c_lblue='%F{blue}'
+    local c_clear='%f'
+  else
+    # Using \[ and \] around colors is necessary to prevent
+    # issues with command line editing/browsing/completion!
+    local c_red='\[\e[31m\]'
+    local c_green='\[\e[32m\]'
+    local c_lblue='\[\e[1;34m\]'
+    local c_clear='\[\e[0m\]'
+  fi
+  local bad_color=$c_red
+  local ok_color=$c_green
+  local flags_color="$c_lblue"
+
+  local branch_color=""
+  if [ $detached = no ]; then
+    branch_color="$ok_color"
+  else
+    branch_color="$bad_color"
+  fi
+  c="$branch_color$c"
+
+  z="$c_clear$z"
+  if [ "$w" = "*" ]; then
+    w="$bad_color$w"
+  fi
+  if [ -n "$i" ]; then
+    i="$ok_color$i"
+  fi
+  if [ -n "$s" ]; then
+    s="$flags_color$s"
+  fi
+  if [ -n "$u" ]; then
+    u="$bad_color$u"
+  fi
+  r="$c_clear$r"
+}
+
+__git_eread ()
+{
+  local f="$1"
+  shift
+  test -r "$f" && read "$@" <"$f"
+}
+
+# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
+# when called from PS1 using command substitution
+# in this mode it prints text to add to bash PS1 prompt (includes branch name)
+#
+# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
+# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
+# when two arguments are given, the first is prepended and the second appended
+# to the state string when assigned to PS1.
+# The optional third parameter will be used as printf format string to further
+# customize the output of the git-status string.
+# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
+__git_ps1 ()
+{
+  # preserve exit status
+  local exit=$?
+  local pcmode=no
+  local detached=no
+  local ps1pc_start='\u@\h:\w '
+  local ps1pc_end='\$ '
+  local printf_format=' (%s)'
+
+  case "$#" in
+    2|3)  pcmode=yes
+      ps1pc_start="$1"
+      ps1pc_end="$2"
+      printf_format="${3:-$printf_format}"
+      # set PS1 to a plain prompt so that we can
+      # simply return early if the prompt should not
+      # be decorated
+      PS1="$ps1pc_start$ps1pc_end"
+    ;;
+    0|1)  printf_format="${1:-$printf_format}"
+    ;;
+    *)  return $exit
+    ;;
+  esac
+
+  # ps1_expanded:  This variable is set to 'yes' if the shell
+  # subjects the value of PS1 to parameter expansion:
+  #
+  #   * bash does unless the promptvars option is disabled
+  #   * zsh does not unless the PROMPT_SUBST option is set
+  #   * POSIX shells always do
+  #
+  # If the shell would expand the contents of PS1 when drawing
+  # the prompt, a raw ref name must not be included in PS1.
+  # This protects the user from arbitrary code execution via
+  # specially crafted ref names.  For example, a ref named
+  # 'refs/heads/$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' might cause the
+  # shell to execute 'sudo rm -rf /' when the prompt is drawn.
+  #
+  # Instead, the ref name should be placed in a separate global
+  # variable (in the __git_ps1_* namespace to avoid colliding
+  # with the user's environment) and that variable should be
+  # referenced from PS1.  For example:
+  #
+  #     __git_ps1_foo=$(do_something_to_get_ref_name)
+  #     PS1="...stuff...\${__git_ps1_foo}...stuff..."
+  #
+  # If the shell does not expand the contents of PS1, the raw
+  # ref name must be included in PS1.
+  #
+  # The value of this variable is only relevant when in pcmode.
+  #
+  # Assume that the shell follows the POSIX specification and
+  # expands PS1 unless determined otherwise.  (This is more
+  # likely to be correct if the user has a non-bash, non-zsh
+  # shell and safer than the alternative if the assumption is
+  # incorrect.)
+  #
+  local ps1_expanded=yes
+  [ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
+  [ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
+
+  local repo_info rev_parse_exit_code
+  repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
+    --is-bare-repository --is-inside-work-tree \
+    --short HEAD 2>/dev/null)"
+  rev_parse_exit_code="$?"
+
+  if [ -z "$repo_info" ]; then
+    return $exit
+  fi
+
+  local short_sha
+  if [ "$rev_parse_exit_code" = "0" ]; then
+    short_sha="${repo_info##*$'\n'}"
+    repo_info="${repo_info%$'\n'*}"
+  fi
+  local inside_worktree="${repo_info##*$'\n'}"
+  repo_info="${repo_info%$'\n'*}"
+  local bare_repo="${repo_info##*$'\n'}"
+  repo_info="${repo_info%$'\n'*}"
+  local inside_gitdir="${repo_info##*$'\n'}"
+  local g="${repo_info%$'\n'*}"
+
+  if [ "true" = "$inside_worktree" ] &&
+     [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] &&
+     [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] &&
+     git check-ignore -q .
+  then
+    return $exit
+  fi
+
+  local r=""
+  local b=""
+  local step=""
+  local total=""
+  if [ -d "$g/rebase-merge" ]; then
+    __git_eread "$g/rebase-merge/head-name" b
+    __git_eread "$g/rebase-merge/msgnum" step
+    __git_eread "$g/rebase-merge/end" total
+    if [ -f "$g/rebase-merge/interactive" ]; then
+      r="|REBASE-i"
+    else
+      r="|REBASE-m"
+    fi
+  else
+    if [ -d "$g/rebase-apply" ]; then
+      __git_eread "$g/rebase-apply/next" step
+      __git_eread "$g/rebase-apply/last" total
+      if [ -f "$g/rebase-apply/rebasing" ]; then
+        __git_eread "$g/rebase-apply/head-name" b
+        r="|REBASE"
+      elif [ -f "$g/rebase-apply/applying" ]; then
+        r="|AM"
+      else
+        r="|AM/REBASE"
+      fi
+    elif [ -f "$g/MERGE_HEAD" ]; then
+      r="|MERGING"
+    elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
+      r="|CHERRY-PICKING"
+    elif [ -f "$g/REVERT_HEAD" ]; then
+      r="|REVERTING"
+    elif [ -f "$g/BISECT_LOG" ]; then
+      r="|BISECTING"
+    fi
+
+    if [ -n "$b" ]; then
+      :
+    elif [ -h "$g/HEAD" ]; then
+      # symlink symbolic ref
+      b="$(git symbolic-ref HEAD 2>/dev/null)"
+    else
+      local head=""
+      if ! __git_eread "$g/HEAD" head; then
+        return $exit
+      fi
+      # is it a symbolic ref?
+      b="${head#ref: }"
+      if [ "$head" = "$b" ]; then
+        detached=yes
+        b="$(
+        case "${GIT_PS1_DESCRIBE_STYLE-}" in
+        (contains)
+          git describe --contains HEAD ;;
+        (branch)
+          git describe --contains --all HEAD ;;
+        (describe)
+          git describe HEAD ;;
+        (* | default)
+          git describe --tags --exact-match HEAD ;;
+        esac 2>/dev/null)" ||
+
+        b="$short_sha..."
+        b="($b)"
+      fi
+    fi
+  fi
+
+  if [ -n "$step" ] && [ -n "$total" ]; then
+    r="$r $step/$total"
+  fi
+
+  local w=""
+  local i=""
+  local s=""
+  local u=""
+  local c=""
+  local p=""
+
+  if [ "true" = "$inside_gitdir" ]; then
+    if [ "true" = "$bare_repo" ]; then
+      c="BARE:"
+    else
+      b="GIT_DIR!"
+    fi
+  elif [ "true" = "$inside_worktree" ]; then
+    if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
+       [ "$(git config --bool bash.showDirtyState)" != "false" ]
+    then
+      git diff --no-ext-diff --quiet || w="*"
+      git diff --no-ext-diff --cached --quiet || i="+"
+      if [ -z "$short_sha" ] && [ -z "$i" ]; then
+        i="#"
+      fi
+    fi
+    if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
+       git rev-parse --verify --quiet refs/stash >/dev/null
+    then
+      s="$"
+    fi
+
+    if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
+       [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
+       git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
+    then
+      u="%${ZSH_VERSION+%}"
+    fi
+
+    if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
+      __git_ps1_show_upstream
+    fi
+  fi
+
+  local z="${GIT_PS1_STATESEPARATOR-" "}"
+
+  # NO color option unless in PROMPT_COMMAND mode
+  if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
+    __git_ps1_colorize_gitstring
+  fi
+
+  b=${b##refs/heads/}
+  if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
+    __git_ps1_branch_name=$b
+    b="\${__git_ps1_branch_name}"
+  fi
+
+  local f="$w$i$s$u"
+  local gitstring="$c$b${f:+$z$f}$r$p"
+
+  if [ $pcmode = yes ]; then
+    if [ "${__git_printf_supports_v-}" != yes ]; then
+      gitstring=$(printf -- "$printf_format" "$gitstring")
+    else
+      printf -v gitstring -- "$printf_format" "$gitstring"
+    fi
+    PS1="$ps1pc_start$gitstring$ps1pc_end"
+  else
+    printf -- "$printf_format" "$gitstring"
+  fi
+
+  return $exit
+}
diff --git a/.config/profile/rc/paths b/.config/profile/rc/paths
deleted file mode 100644
index c3cf39a..0000000
--- a/.config/profile/rc/paths
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# Set PATH so it includes user's private bin if it exists
-if [ -d "${HOME}/bin" ] ; then
- PATH="${HOME}/bin:${PATH}"
-fi
-
-# Set MANPATH so it includes users' private man if it exists
-if [ -d "${HOME}/man" ]; then
-  MANPATH="${HOME}/man:${MANPATH}"
-fi
-
-# Set INFOPATH so it includes users' private info if it exists
-if [ -d "${HOME}/info" ]; then
-  INFOPATH="${HOME}/info:${INFOPATH}"
-fi
-
-# Set PATH to temporary folders
-export TEMPDIR="${HOME}/tmp"
-export TMPDIR="${HOME}/tmp"
-
-# Set PATH to PREFIX folders
-export PREFIX="${HOME}"
-
-# Add local libraries to libpath
-# LD_LIBRARY_PATH="${PREFIX}/lib:${LD_LIBRARY_PATH}"
diff --git a/.config/profile/rc/paths.sh b/.config/profile/rc/paths.sh
new file mode 100644
index 0000000..90ef4d1
--- /dev/null
+++ b/.config/profile/rc/paths.sh
@@ -0,0 +1,25 @@
+
+# Set PATH so it includes user's private bin if it exists
+if [ -d "${HOME}/bin" ] ; then
+ PATH=.:${HOME}/bin:${PATH}
+fi
+
+# Set MANPATH so it includes users' private man if it exists
+if [ -d "${HOME}/man" ]; then
+  MANPATH="${HOME}/man:${MANPATH}"
+fi
+
+# Set INFOPATH so it includes users' private info if it exists
+if [ -d "${HOME}/info" ]; then
+  INFOPATH="${HOME}/info:${INFOPATH}"
+fi
+
+# Set PATH to temporary folders
+export TEMPDIR="${HOME}/tmp"
+export TMPDIR="${HOME}/tmp"
+
+# Set PATH to PREFIX folders
+export PREFIX="${HOME}"
+
+# Add local libraries to libpath
+# LD_LIBRARY_PATH="${PREFIX}/lib:${LD_LIBRARY_PATH}"
diff --git a/.config/profile/rc/prompt.sh b/.config/profile/rc/prompt.sh
new file mode 100644
index 0000000..bca13df
--- /dev/null
+++ b/.config/profile/rc/prompt.sh
@@ -0,0 +1,76 @@
+# Bash git prompt solarized
+
+if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
+        export TERM='gnome-256color';
+elif infocmp xterm-256color >/dev/null 2>&1; then
+        export TERM='xterm-256color';
+fi;
+
+if tput setaf 1 &> /dev/null; then
+	tput sgr0; # reset colors
+	bold=$(tput bold);
+	reset=$(tput sgr0);
+	black=$(tput setaf 0);
+	blue=$(tput setaf 33);
+	cyan=$(tput setaf 37);
+	green=$(tput setaf 64);
+	orange=$(tput setaf 166);
+	purple=$(tput setaf 125);
+	red=$(tput setaf 124);
+	violet=$(tput setaf 61);
+	white=$(tput setaf 15);
+	yellow=$(tput setaf 136);
+else
+	bold='';
+	reset="\e[0m";
+	black="\e[1;30m";
+	blue="\e[1;34m";
+	cyan="\e[1;36m";
+	green="\e[1;32m";
+	orange="\e[1;33m";
+	purple="\e[1;35m";
+	red="\e[1;31m";
+	violet="\e[1;35m";
+	white="\e[1;37m";
+	yellow="\e[1;33m";
+fi;
+
+# Highlight the user name when logged in as root.
+if [[ "${USER}" == "root" ]]; then
+	userStyle="${red}";
+else
+	userStyle="${orange}";
+fi;
+
+# Highlight the hostname when connected via SSH.
+if [[ "${SSH_TTY}" ]]; then
+	hostStyle="${bold}${red}";
+else
+	hostStyle="${yellow}";
+fi;
+
+# Enabling any of these options will slow down the prompt
+export GIT_PS1_SHOWDIRTYSTATE=1
+export GIT_PS1_SHOWSTASHSTATE=1
+export GIT_PS1_SHOWUNTRACKEDFILES=1
+export GIT_PS1_SHOWUPSTREAM=1
+
+# Set git prompt
+# Set the terminal title to the current working directory.
+PS1='\[\033]0;\w\007\]';
+PS1+='\[${bold}\]';
+PS1+='\r'; # newline
+PS1+='\[${userStyle}\]\u '; # username
+PS1+='\[${white}\]at ';
+PS1+='\[${hostStyle}\]\h '; # at host
+PS1+='\[${white}\]in ';
+PS1+='\[${green}\]\w '; # in working directory
+PS1+="$(__git_ps1 '\[${white}\]on \[${violet}\]%s\[${blue}\]')";  # on branch
+PS1+='\n'; # newline
+PS1+='\[${white}\]\$ '; # `$`
+PS1+='\[${reset}\]'; # reset color
+export PS1;
+
+PS2='\[${yellow}\]→ '; # `→`
+PS2+='\[${reset}\]'; # reset color
+export PS2;
diff --git a/.profile b/.profile
index 6a67f4f..6c6dcfe 100644
--- a/.profile
+++ b/.profile
@@ -3,14 +3,17 @@
 # This file is not read by bash(1) if ~/.bash_profile or ~/.bash_login
 # exists.
 
-# Run scripts
-for file in ${HOME}/.config/profile/rc/*; do
-    [ -f "$file" ] && source "$file";
-done;
+#[ -f /etc/profile ] && source /etc/profile
+
+# the default umask is set in /etc/profile;
+umask 022
 
 # if running bash
 if [ -n "${BASH_VERSION}" ]; then
-  # source the users bashrc if it exists
   [ -f "${HOME}/.bashrc" ] && source "${HOME}/.bashrc"
 fi
 
+# set path, environment, prompt etc
+for file in ${HOME}/.config/profile/rc/*; do
+    [ -f "$file" ] && source "$file";
+done;