Skip to content

Commit fafd7e3

Browse files
added _bd_init()
1 parent 23dd803 commit fafd7e3

2 files changed

Lines changed: 49 additions & 7 deletions

File tree

RELEASE-NOTES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# 0.46.2.3
2+
- bd.sh: added _bd_init()
3+
14
# 0.46.2.2
25
- bd.sh: added new $__BD_PWD lock and previous $HOME logic
36

bd.sh

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
#
2828
# https://github.com/bash-d/bd/blob/main/LICENSE.md
2929

30+
BD_VERSION=0.46.2.3
31+
3032
#
3133
# init
3234
#
@@ -42,10 +44,7 @@ if [ "${BASH_SOURCE}" == '' ]; then
4244
return 1 &> /dev/null
4345
fi
4446

45-
export BD_VERSION=0.46.2.2
46-
47-
[ "${_BD_PWD}" ] && return
48-
export _BD_PWD="${PWD}"
47+
export BD_VERSION
4948

5049
#
5150
# functions
@@ -378,6 +377,36 @@ _bd_help() {
378377
printf "${bd_help}"
379378
}
380379

380+
# initialize the bd environment (for .bash_profile and .bashrc)
381+
_bd_init() {
382+
_bd_debug "${FUNCNAME}(${@})" 55
383+
384+
local _bash_source _bash_source_basename _bd_variable_name _bd_value
385+
386+
for _bash_source in "${BASH_SOURCE[@]}"; do
387+
_bd_debug "_bash_source = ${_bash_source}" 20
388+
389+
_bash_source_basename="${_bash_source##*/}"
390+
_bd_debug "_bash_source_basename = ${_bash_source_basename}" 22
391+
392+
if [ "${_bash_source_basename}" == ".bash_profile" ] || [ "${_bash_source_basename}" == ".bashrc" ]; then
393+
# reset environment for interactive or login shells
394+
_bd_debug "reset environment; sourced by = ${_bash_source}" 5
395+
396+
while IFS='=' read -r _bd_variable_name _bd_variable_value; do
397+
[ "${_bd_variable_name}" == "" ] && continue
398+
if [[ ${_bd_variable_name} == '_BD'* ]] || [[ ${_bd_variable_name} == '_bd'* ]]; then
399+
_bd_debug "unset -v ${_bd_variable_name}" 15
400+
unset -v ${_bd_variable_name}
401+
fi
402+
done < <(env)
403+
unset -v _bd_variable_name _bd_variable_value
404+
405+
break
406+
fi
407+
done
408+
}
409+
381410
# load all config files & directories
382411
_bd_load_config() {
383412
local bd_load_config_dir_name
@@ -568,6 +597,8 @@ _bd_main() {
568597

569598
local bd_main_option=1
570599

600+
_bd_init
601+
571602
case "${1}" in
572603
bits | b | --bits | -b)
573604
_bd_bits ${@}
@@ -595,11 +626,16 @@ _bd_main() {
595626
_bd_sundry version
596627
;;
597628
*)
629+
# prevent excessive sourcing (e.g. from config files)
630+
[ "${_BD_PWD}" ] && return
631+
598632
bd_main_option=0
599633

600634
_bd_debug "${BD_SOURCE} ${1} pass; invoke autoloader" 10
601635

602636
_bd_autoloader ${@}
637+
638+
export _BD_PWD="${PWD}"
603639
;;
604640
esac
605641

@@ -796,6 +832,7 @@ _bd_namespace_reset() {
796832
bd_function_names+=(_bd_autoloader_execute_array)
797833
bd_function_names+=(_bd_bootstrap)
798834
bd_function_names+=(_bd_caller)
835+
bd_function_names+=(_bd_init)
799836
bd_function_names+=(_bd_load_config)
800837
bd_function_names+=(_bd_load_config_dir)
801838
bd_function_names+=(_bd_load_config_file)
@@ -818,17 +855,19 @@ _bd_namespace_reset() {
818855

819856
# unset function names
820857
for bd_function_name in ${bd_function_names[@]}; do
821-
unset -f "${bd_function_name}" && _bd_debug "unset -f ${bd_function_name}" 15
858+
_bd_debug "unset -f ${bd_function_name}" 15
859+
unset -f "${bd_function_name}"
822860
done
823861

824862
# unset variabe names
825863
for bd_variable_name in ${bd_variable_names[@]}; do
826-
unset -v ${bd_variable_name} && _bd_debug "unset -v ${bd_variable_name}" 15
864+
_bd_debug "unset -v ${bd_variable_name}" 15
865+
unset -v ${bd_variable_name}
827866
done
828867

829868
if [ "${1}" != 'init' ]; then
830869
# functions used locally (& self)
831-
unset -f _bd_true _bd_namespace_init _bd_namespace_reset
870+
unset -f _bd_init _bd_namespace_init _bd_namespace_reset _bd_true
832871
fi
833872
}
834873
export -f _bd_namespace_reset

0 commit comments

Comments
 (0)