SH_NAME="sh" SH_ROOT="/etc/${SH_NAME}" SH_USER="${HOME}/${SH_NAME}" SH_MAIN="${SH_ROOT}/main.sh" [ -n "${ENV}" ] || export ENV="${SH_MAIN}" _sh_main_commands() { local file="${1}" grep "()" "${file}" | cut --delimiter "(" --fields 1 } main_source_directory() { local path="${1}" if [ -d "${path}" ]; then local cmd count ifs module modules modules="$(find "${path}" \ -type "f" \ -name "*.sh" \ -printf "%P " | sort)" ifs="${IFS}" IFS=" " count=0 echo echo ". ${path}" for module in ${modules}; do count=$((count + 1)) printf "%02d" "${count}" echo " ${module%.sh}" module="${path}/${module}" if [ "${module}" != "${ENV}" ]; then . "${module}" cmd="$(_sh_main_commands "${module}")" if [ -n "${cmd}" ]; then [ -n "${CMD}" ] && CMD="${CMD} " CMD="${CMD}${cmd}" fi fi done IFS="${ifs}" else echo "Not a directory: ${path}" return 1 fi } main_source_file() { local path="${1}" if [ -f "${path}" ]; then main_source_directory "$(dirname "${path}")" else echo "Not a file: ${path}" return 1 fi } main_source_file "${ENV}" main_source_directory "${SH_USER}" sh_log "" \ "sh_… shell functions" \ "sa__… shell aliases" \ "u__… user aliases"