# shellcheck shell=sh source=/dev/null
# ~/.sh_profile: executed by the command interpreter for login shells.

# source ~/.*aliases and ~/.*functions files
for source in aliases functions; do
  for file in "$HOME"/.*"$source"; do
    [ -f "$file" ] || continue
    # remove $HOME/. prefix from file
    file="${file#${HOME}/.}"
    # remove _$source suffix from $file
    command="${file%_$source}"
    # source file if command exists, ie ~/.bash_aliases
    command -v "$command" >/dev/null 2>&1 && . "${HOME}/.$file"
    # remove $source suffix from $file, ie ~/.aliases
    command="${file%$source}"
    # source file if command empty, ie ~/.aliases
    [ -z "$command" ] && . "${HOME}/.$file"
  done
done

# source ~/.*shrc
for file in "$HOME"/.*shrc; do
  [ -f "$file" ] || continue
  # remove $HOME/. prefix from file
  file="${file#${HOME}/.}"
  # source file if match current shell
  [ "$(basename "${SHELL}")" = "${file%rc}" ] && . "${HOME}/.$file"
done

# set PATH to include user's bin
for path in /*/local/sbin /*/local/bin /*/local/*/bin "${HOME}"/.*/bin; do
  [ -d "$path" ] || continue
  case ":${PATH}:" in
    *:"$path":*) ;;
    *) export PATH="${path}:$PATH" ;;
  esac
done

[ -f ~/.profile ] && . ~/.profile
