diff --git a/load.sh b/load.sh index 66b0c88..0f571bf 100755 --- a/load.sh +++ b/load.sh @@ -82,6 +82,7 @@ for dir in ${1:-$BASH_SHELL_DIRS}; do [[ "$dir" = "$BASH_SHELL_BASE" ]] && export BASH_SHELL_BASE_LOADED=true done +# env | grep NETWORK # # set one or the other of these in shell.env if you want to load networks with every shell if [[ $BASH_SHELL_HOME_NETWORK_LOAD ]] || [[ $BASH_SHELL_ALL_NETWORKS_LOAD ]] || [[ $BASH_SHELL_NETWORKS_LOAD ]] ; then diff --git a/modules/scripting/helpers.mod b/modules/scripting/helpers.mod index 3aef07b..c376822 100644 --- a/modules/scripting/helpers.mod +++ b/modules/scripting/helpers.mod @@ -21,6 +21,11 @@ filename() { echo $(basename "$1" | rev | cut -f 2- -d '.' | rev) } +fileext() { + # passed entire path + echo $1 | awk -F . '{print $NF}' +} + # // TODO remove and use path module # // must change acl.lib and loginout, chromium, and ungoogled install files adirname() { diff --git a/shell.env b/shell.env index d3419d9..52f3d83 100755 --- a/shell.env +++ b/shell.env @@ -1,17 +1,17 @@ -#!/bin/bash +# !/bin/bash # UCI SHELL REPOS ENVIRONMENT # see README.md for details of how the system work # In a nutshell its a set of directories that are sourced when creating a shell # The repos allow one to organize functionality across machines, users and networks # In general do not change or edit this base shell.env file -# Instead add a custom shell.env to specific shell host directory, +# Instead add a custom shell.env to specific shell host directory, # user shell directory or dev shell directory # echo DEBUG: sourcing shell.env -# This file gets sourced early in /etc/profile for all login and -# for interactive non-login shells via /etc/bash.bashrc +# This file gets sourced early in /etc/profile for all login and +# for interactive non-login shells via /etc/bash.bashrc # for interactive login shell (ssh is about the only case) # loading the shell might cause issues specially using rsync @@ -21,11 +21,11 @@ # if bash is not installed then don't bother to continue ! command -v bash >/dev/null 2>&1 && echo no bash command && return 1 -export SHELL=$(command -v bash ) +export SHELL="$(command -v bash )" # without changing /etc/profile you can disable loading the UCI Shell system # by uncommenting this line. It will only set up a simple prompt instead. -# if UCI shell is causing issues then one can invoke this +# if UCI shell is causing issues then one can invoke this # BASH_SAFE_MODE=true # todo add safemode enable/disable function that (un)comments @@ -41,13 +41,13 @@ fi # within each of those directories if a load.sh exits it will be run # otherwise files will be sourced according to load.sh in the base repo -export BASH_SHELL_LOAD=$BASH_SHELL_BASE/load.sh # load.sh is default +export BASH_SHELL_LOAD="$BASH_SHELL_BASE/load.sh" # load.sh is default" -export BASH_SHELL_STARTUP=$BASH_SHELL_BASE/startup.sh # startup.sh is default +export BASH_SHELL_STARTUP="$BASH_SHELL_BASE/startup.sh # startup.sh is default" -# for non-interactive login shells (like at boot) +# for non-interactive login shells (like at boot) # load this library that allows loading additional modules -export BASH_ENV=$BASH_SHELL_BASE/module.lib # module loading functions +export BASH_ENV="$BASH_SHELL_BASE/module.lib # module loading functions" # otherwise comment above and uncommented next line # export BASH_ENV=$BASH_SHELL_LOAD # load same as interactive shell, beware usually causes issues!!! @@ -57,34 +57,34 @@ export BASH_ENV=$BASH_SHELL_BASE/module.lib # module loading functions # By default it will set up a master directory /shell # DEFAULT DIRECTORY STRUCTURE -# /shell -# -- base # $BASH_SHELL_BASE=/shell/base (default) is set in /etc/profile during setup -# -- any -# -- host -# -- network -# -- networks -# -- -# -- -# -- -# -- $HOME/shell # user +# /shell +# -- base # $BASH_SHELL_BASE=/shell/base (default) is set in /etc/profile during setup +# -- any +# -- host +# -- network +# -- networks +# -- +# -- +# -- +# -- $HOME/shell # user # default loading preference is first in list is lowest and last is highest # for example a function "test" in the BASE will be overwritten by one the HOST repo -# that is the same for startup scripts and module loading. +# that is the same for startup scripts and module loading. BASH_SHELL_DIRS="$BASH_SHELL_BASE " declare parent -parent=$(dirname $BASH_SHELL_BASE) +parent="$(dirname $BASH_SHELL_BASE)" # Any Host -BASH_SHELL_ANY_HOST=${parent}/any/host # or set to +BASH_SHELL_ANY_HOST="${parent}/any/host # or set to" # export BASH_SHELL_ALL_HOSTS= [[ -d $BASH_SHELL_ANY_HOST ]] && BASH_SHELL_DIRS+="$BASH_SHELL_ANY_HOST " && export BASH_SHELL_ANY_HOST BASH_SHELL_ANY_NETWORK=$parent/any/network # BASH_SHELL_ALL_NETWORKS= -[[ -d $BASH_SHELL_ANY_NETWORK ]] && BASH_SHELL_DIRS+="$BASH_SHELL_ANY_NETWORK " && export BASH_SHELL_ANY_NETWORK +[[ -d $BASH_SHELL_ANY_NETWORK ]] && BASH_SHELL_DIRS+="$BASH_SHELL_ANY_NETWORK " && export BASH_SHELL_ANY_NETWORK # these are all the base directories to source export BASH_SHELL_DIRS @@ -97,14 +97,14 @@ BASH_SHELL_HOST=$parent/$(hostname) # if this directory exists it is included first in the sourcing # if allows on the develop scripts and modules, etc for later incorporation into a repo -BASH_SHELL_DEV=${BASH_SHELL_DEV:-/opt/shell} +BASH_SHELL_DEV=${BASH_SHELL_DEV:-/opt/shell} [[ -d $BASH_SHELL_DEV ]] && export BASH_SHELL_DEV # by default USER shell sources will be looked for under $HOME/shell -# export BASH_SHELL_USER_DIR=$HOME/shell +export BASH_SHELL_USER_DIR=$HOME/shell -# set up default location to look for other network shell directories +# set up default location to look for other network shell directories BASH_NETWORKS_DIR=$parent/networks # BASH_NETWORKS_DIR= # alt directory to look for networks export BASH_NETWORKS_DIR @@ -128,16 +128,16 @@ source $BASH_SHELL_BASE/module.lib # echo $BASH_SHELL_DIRS # echo --------------------------------- -#archived ---for deletion or better explanation +# archived ---for deletion or better explanation # echo enabling aliases with non-interactive shell # DEPRECATED # export BASH_USE_ALIAS=true # will source aliases for non-interactive # if not using implicit sourcing for non-interactive shells then one can do this per script -################## +# ################# # expanding aliases is optional # shopt -s expand_aliases # source $BASH_SHELL_LOAD -# < your script code > +# < your script code > # shopt -u expand_aliases -#################### +# ###################