set default user subdirectory to .shell
get BASH_SHELL_BASE in both profile and bash.bashrcmaster
parent
75297c7cdb
commit
a15a290328
19
README.md
19
README.md
|
@ -9,14 +9,6 @@ Clone to a directory
|
|||
|
||||
`git clone https://git.kebler.net/bashrc <repo path>` suggestion: /opt/shell/base
|
||||
|
||||
now edit your `~/.bashrc` with nano or other available editor
|
||||
|
||||
add this
|
||||
```
|
||||
# BASH_SHELL is a common parent directory that should be set in /etc/bash.bashrc
|
||||
export BASH_SHELL_REPO=<repo path>/setup.
|
||||
source $BASH_SHELL_REPO/setup.sh
|
||||
```
|
||||
|
||||
The idea is to keep the .bashrc file completely clean and manage this repo instead
|
||||
so you should really find a home for all the existing content of your .bashrc file within the repo
|
||||
|
@ -31,13 +23,13 @@ if you include any of these environment variables all files in there directories
|
|||
# unless below specific directories are set
|
||||
# shell files are sourced in this order
|
||||
# sourced via /etc/bash.bashrc so for all machine users
|
||||
# $BASH_SHELL_BASE # this MUST be set in /etc/bash.bashrc
|
||||
# $BASH_SHELL_BASE # this is set in /etc/bash.bashrc and etc/profile via the deploy script
|
||||
# $BASH_SHELL_NETWORK/all
|
||||
# $BASH_SHELL_NETWORK/$NETWORKNAME
|
||||
# $BASH_SHELL_HOST/all
|
||||
# $BASH_SHELL_HOST/<hostname>
|
||||
# sourced via $HOME/.bashrc
|
||||
# $HOME/shell or $HOME/BASH_SHELL_USER
|
||||
# $HOME/.shell or $HOME/BASH_SHELL_USER
|
||||
|
||||
# within each of those directories if setup.sh exits it will be run
|
||||
# otherwise files will be sourced exactly like in the base
|
||||
|
@ -52,7 +44,7 @@ export BASH_SHELL_NETWORK=$BASH_SHELL/network
|
|||
# will use $BASH_SHELL_HOST/<hostname> unless specifically set
|
||||
export BASH_SHELL_HOST=$BASH_SHELL/host
|
||||
|
||||
# by default SHELL sources will be looked for under $HOME/bash/shell
|
||||
# by default SHELL sources will be looked for under $HOME/.shell
|
||||
# but can be user set below to $HOME/$BASH_SHELL_USER
|
||||
# export BASH_SHELL_USER=<some directory under $HOME>
|
||||
if there is a script setup.sh in the root of these directoies it will be run. If not then all files no matter how deep will be sourced in alpha order order.
|
||||
|
@ -63,10 +55,7 @@ If need to turn off a file just add `.off` to the file name rather than move or
|
|||
|
||||
If you are really done with something but want to keep a copy in the repo move it to /archive folder within the primary subfolders
|
||||
|
||||
if sourcing some file depends on another preface with numbers to put it before. Functions are all sourced before aliases so can be refered to there.
|
||||
if sourcing some file depends on another preface with numbers to put it before. Functions are all sourced before aliases so can be referred to there.
|
||||
|
||||
Be aware that an alias or function set in the repo could be subsuming some existing binary or script.
|
||||
|
||||
|
||||
`[[ $BASHPID -eq $$ ]] && echo was called directly || echo was called in a subshell`
|
||||
https://unix.stackexchange.com/a/594809/201387
|
||||
|
|
|
@ -19,7 +19,7 @@ function logit(){
|
|||
}
|
||||
|
||||
#
|
||||
# LOG_DIR=/opt/bash/logs
|
||||
# LOG_DIR=/shell/logs
|
||||
# mkdir -p $LOG_DIR
|
||||
# LOG_FILE=$LOG_DIR/bash_profile
|
||||
#
|
||||
|
|
2
load.sh
2
load.sh
|
@ -103,7 +103,7 @@ unset BASH_SHELL_LOADED
|
|||
# add in any network directories
|
||||
declare networks
|
||||
source "$HOME/.bashrc"
|
||||
networks="$HOME/${BASH_SHELL_USER:-"bash/shell"}/.networks"
|
||||
networks="$HOME/${BASH_SHELL_USER:-".shell"}/.networks"
|
||||
NETWORK_DOMAINS="$([[ -f $networks ]] && cat $networks) "
|
||||
# These will be loaded for all users
|
||||
networks="$BASH_SHELL_HOST/$(hostname)/.networks"
|
||||
|
|
|
@ -36,7 +36,7 @@ local DIRS
|
|||
local MODULE=$1
|
||||
# Precidence is user. current hosts, all hosts, current network, all networks, base
|
||||
DIRS=( \
|
||||
$([ $BASH_SHELL_USER ] && echo $HOME/$BASH_SHELL_USER || echo $HOME/bash/shell) \
|
||||
$([ $BASH_SHELL_USER ] && echo $HOME/$BASH_SHELL_USER || echo $HOME/.shell) \
|
||||
$BASH_SHELL_HOST/$(hostname)
|
||||
$BASH_SHELL_HOST/all \
|
||||
$BASH_SHELL_NETWORK/$NETWORKNAME \
|
||||
|
|
|
@ -34,9 +34,9 @@ for file in $files; do
|
|||
cmd="install -C -m 660 -o $_USER -g sudo $file $_USER_DIR"
|
||||
[[ $USER = "$_USER" ]] && eval $cmd || sudo -E -- bash -c "$cmd"
|
||||
done
|
||||
echo "the default user bash shell repo subdirecty is \`bash/shell\`"
|
||||
echo "the default user bash shell repo subdirecty is \`.shell\`"
|
||||
echo "enter an alternative subdirectory under $_USER_DIR or just <enter> to accept default"
|
||||
read -e answer
|
||||
[[ ! $answer ]] && echo will source default user shell repo at $_USER_DIR/bash/shell && exit 0
|
||||
[[ ! $answer ]] && echo will source default user shell repo at $_USER_DIR/.shell && exit 0
|
||||
sed -i '/[[ $BASH_SHELL_BASE_LOADED = true ]]/ i\ BASH_SHELL_USER='$answer'' $_USER_DIR/.bashrc
|
||||
echo will be processing user shell repo at $_USER_DIR/$answer
|
||||
|
|
|
@ -35,7 +35,8 @@ read -e answer
|
|||
echo -----------------;echo deploying /etc shell files
|
||||
files=$(find $BASH_SHELL_BASE/setup/etc/ -maxdepth 1 -type f)
|
||||
for file in $files; do sudo install -C -m 644 -o root -g root $file /etc; done
|
||||
echo setting BASH_SHELL_BASE to $BASH_SHELL_BASE in etc/profile
|
||||
echo setting BASH_SHELL_BASE to $BASH_SHELL_BASE in etc/bash.bashrc and /etc/profile
|
||||
sudo sed -i 's:_BASH_SHELL_BASE_:'${BASH_SHELL_BASE}':' /etc/bash.bashrc
|
||||
sudo sed -i 's:BASH_SHELL_BASE=.*:BASH_SHELL_BASE='${BASH_SHELL_BASE}':' /etc/profile
|
||||
files=$(find $BASH_SHELL_BASE/setup/etc/profile.d -maxdepth 1 -type f)
|
||||
for file in $files; do sudo install -C -m 644 -o root -g root $file /etc/profile.d; done
|
||||
|
|
|
@ -7,7 +7,7 @@ shopt -q login_shell && export SHELL_LOGIN=true
|
|||
[ $EUID -eq 0 ] && export USER_ROOT=true
|
||||
|
||||
#uncomment these for debugging.
|
||||
# echo ---- sourcing system wide bash.bashrc ---
|
||||
# echo ---- sourcing system wide bash.bashrc ---
|
||||
# [[ $USER_ROOT ]] && echo 'Root User' || echo 'Non Root User'
|
||||
# [[ $SHELL_INTERACTIVE ]] && echo 'Interactive' || echo 'Not interactive'
|
||||
# [[ $SHELL_LOGIN ]] && echo 'Login shell' || echo 'Not login shell'
|
||||
|
@ -19,8 +19,7 @@ source /etc/profile
|
|||
else
|
||||
# Set the initial path
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin
|
||||
# set this for access to any shell sources
|
||||
export BASH_SHELL_BASE=/opt/bash/shell/base
|
||||
# loading module functions
|
||||
source $BASH_SHELL_BASE/module.lib
|
||||
# loading just the module functions which will give access to load any module in shell dirs
|
||||
# _BASH_SHELL_BASE_ is/was replaced by the deploy script with actual path
|
||||
source _BASH_SHELL_BASE_/module.lib
|
||||
fi
|
|
@ -11,7 +11,7 @@
|
|||
if ( [[ $SHELL_INTERACTIVE ]] );then
|
||||
if ( [[ $BASH_SHELL_BASE_LOADED = true ]] ) ; then
|
||||
# echo loading user shell sources
|
||||
export BASH_SHELL_USER=${BASH_SHELL_USER:-"bash/shell"}
|
||||
export BASH_SHELL_USER=${BASH_SHELL_USER:-".shell"}
|
||||
[[ -d $HOME/$BASH_SHELL_USER ]] && shell_process_directory "$HOME/$BASH_SHELL_USER" ||\
|
||||
echo no user shell directory $HOME/$BASH_SHELL_USER to process, create one or clone a template
|
||||
fi
|
||||
|
|
|
@ -67,7 +67,7 @@ export BASH_SHELL_NETWORK=$([[ -d $parent/network ]] && echo $parent/network ||
|
|||
# or comment above and set explictly
|
||||
# export BASH_SHELL_NETWORK=<some directory>
|
||||
|
||||
# by default USER shell sources will be looked for under $HOME/bash/shell
|
||||
# by default USER shell sources will be looked for under $HOME/.shell
|
||||
# but the default directory for all users can be set manually below
|
||||
# export BASH_SHELL_USER=<some directory under $HOME>
|
||||
# add this export to .bashrc for custom directory. This can be done during or after using the user setup script
|
||||
|
|
Loading…
Reference in New Issue