The base bash shell directory and setup script for bash shell sourcing system
This repository has been archived on 2022-02-20. You can view files and clone it, but cannot push or open issues/pull-requests.
Go to file
David Kebler 22b3c0cc36 added debug module with debug function - a first cut
load.sh now loads debug module or a noop
file library, file.lib
   - refactored _find function, added alias superceed
       * added h option to include .hidden files
       *
   - added build_file function to append file to another
refactored comment and uncomment functions
added find_mountpoint function to filesystem module
added ssh_config builder function and ssh override to use it.
added github module with binary release fetch function (needs work)
2020-12-03 20:51:14 -08:00
alias added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
archive Initial commit of new shell sourcing system - base directory 2020-11-03 12:07:49 -08:00
env added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
function added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
lang refactored script sourcing exludes to .bash-shell-ignore file 2020-11-18 15:32:09 -08:00
misc refactored script sourcing exludes to .bash-shell-ignore file 2020-11-18 15:32:09 -08:00
modules added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
setup added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
ssh added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
test refactor the way the module library is loaded 2020-11-13 10:25:04 -08:00
.bash-shell-ignore refactored to use ignore and include files for finding files to source 2020-11-20 15:47:38 -08:00
.bash-shell-include refactored to use ignore and include files for finding files to source 2020-11-20 15:47:38 -08:00
.gitignore added setup directory with set of user and system source files that can be copied in new machine 2020-11-10 14:09:08 -08:00
README.md added setup directory with set of user and system source files that can be copied in new machine 2020-11-10 14:09:08 -08:00
TODO.md add support for sourcing for remote shell via ssh. Works for both interactive and non-interactive 2020-11-23 15:14:18 -08:00
load.sh added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
module.lib added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
shell.env added debug module with debug function - a first cut 2020-12-03 20:51:14 -08:00
shell.lib refactored to use ignore and include files for finding files to source 2020-11-20 15:47:38 -08:00
startup.sh refactored to use ignore and include files for finding files to source 2020-11-20 15:47:38 -08:00

README.md

Bash Shell Organizer

A better way to keep your shell setup organized, clean, and useful

interactive (.bashrc) environment, aliases, functions, modules

Install

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

Every file in env functions,aliases and misc subdirectories will be sourced in that order (in setup.sh). Within each folder all files are sourced except ones ending with a .off extension, starting with . and the README.md file plus any in any subfolder except /archive or /dep

The sourced files in this repo should be NOT be user/machine/network specific

if you include any of these environment variables all files in there directories will be sourced where

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_NETWORK/all

$BASH_SHELL_NETWORK/$NETWORKNAME

$BASH_SHELL_HOST/all

$BASH_SHELL_HOST/

sourced via $HOME/.bashrc

$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

identify a network name that this host resides on

like hostname but for the LAN network

if unset then only /all will be sourced

export NETWORKNAME=238

will use $BASH_SHELL_NETWORK/$NETWORKNAME under this directory unless specifically set

export BASH_SHELL_NETWORK=$BASH_SHELL/network

will use $BASH_SHELL_HOST/ unless specifically set

export BASH_SHELL_HOST=$BASH_SHELL/host

by default SHELL sources will be looked for under $HOME/bash/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.

For those

If need to turn off a file just add .off to the file name rather than move or delete the file...simple.

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.

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