File tree Expand file tree Collapse file tree 7 files changed +65
-19
lines changed Expand file tree Collapse file tree 7 files changed +65
-19
lines changed Original file line number Diff line number Diff line change @@ -83,6 +83,7 @@ completion/available/wpscan.completion.bash
83
83
# libraries
84
84
lib/colors.bash
85
85
lib/helpers.bash
86
+ lib/history.bash
86
87
lib/log.bash
87
88
lib/preexec.bash
88
89
lib/search.bash
Original file line number Diff line number Diff line change
1
+ # shellcheck shell=bash
2
+ #
3
+ # Functions for working with Bash's command history.
4
+
5
+ function _bash-it-history-init() {
6
+ safe_append_preexec ' _bash-it-history-auto-save'
7
+ safe_append_prompt_command ' _bash-it-history-auto-load'
8
+ }
9
+
10
+ function _bash-it-history-auto-save() {
11
+ case $HISTCONTROL in
12
+ * ' noauto' * | * ' autoload' * )
13
+ : # Do nothing, as configured.
14
+ ;;
15
+ * ' auto' * )
16
+ # Append new history from this session to the $HISTFILE
17
+ history -a
18
+ ;;
19
+ * )
20
+ # Append *only* if shell option `histappend` has been enabled.
21
+ shopt -q histappend && history -a && return
22
+ ;;
23
+ esac
24
+ }
25
+
26
+ function _bash-it-history-auto-load() {
27
+ case $HISTCONTROL in
28
+ * ' noauto' * )
29
+ : # Do nothing, as configured.
30
+ ;;
31
+ * ' autosave' * )
32
+ # Append new history from this session to the $HISTFILE
33
+ history -a
34
+ ;;
35
+ * ' autoloadnew' * )
36
+ # Read new entries from $HISTFILE
37
+ history -n
38
+ ;;
39
+ * ' auto' * )
40
+ # Blank in-memory history, then read entire $HISTFILE fresh from disk.
41
+ history -a && history -c && history -r
42
+ ;;
43
+ * )
44
+ : # Do nothing, default.
45
+ ;;
46
+ esac
47
+ }
48
+
49
+ _bash_it_library_finalize_hook+=(' _bash-it-history-init' )
Original file line number Diff line number Diff line change 1
1
# shellcheck shell=bash
2
2
about-plugin ' eternal bash history'
3
3
4
- # Load after the history plugin
5
- # BASH_IT_LOAD_PRIORITY: 375
4
+ if [[ ${BASH_VERSINFO[0]} -lt 4 ]] || [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 3 ]]; then
5
+ _log_warning " Bash version 4.3 introduced the 'unlimited' history size capability."
6
+ return 1
7
+ fi
6
8
7
9
# Modify history sizes before changing location to avoid unintentionally
8
10
# truncating the history file early.
9
11
10
12
# "Numeric values less than zero result in every command being saved on the history list (there is no limit)"
11
- export HISTSIZE=-1
13
+ readonly HISTSIZE=-1 2> /dev/null || true
12
14
13
15
# "Non-numeric values and numeric values less than zero inhibit truncation"
14
- export HISTFILESIZE=' unlimited'
16
+ readonly HISTFILESIZE=' unlimited' 2> /dev/null || true
15
17
16
18
# Use a custom history file location so history is not truncated
17
19
# if the environment ever loses this "eternal" configuration.
18
20
HISTDIR=" ${XDG_STATE_HOME:- ${HOME?} / .local/ state} /bash"
19
21
[[ -d ${HISTDIR?} ]] || mkdir -p " ${HISTDIR?} "
20
- export HISTFILE=" ${HISTDIR?} /history"
22
+ readonly HISTFILE=" ${HISTDIR?} /history" 2> /dev/null || true
Original file line number Diff line number Diff line change 1
1
# shellcheck shell=bash
2
2
about-plugin ' search history using the prefix already entered'
3
3
4
- # Load after the history plugin
5
- # BASH_IT_LOAD_PRIORITY: 375
6
-
7
4
# enter a few characters and press UpArrow/DownArrow
8
5
# to search backwards/forwards through the history
9
6
if [[ ${SHELLOPTS} =~ (vi| emacs) ]]; then
Original file line number Diff line number Diff line change 1
1
# shellcheck shell=bash
2
2
about-plugin ' search history using the substring already entered'
3
3
4
- # Load after the history plugin
5
- # BASH_IT_LOAD_PRIORITY: 375
6
-
7
4
# enter a few characters and press UpArrow/DownArrow
8
5
# to search backwards/forwards through the history
9
6
if [[ ${SHELLOPTS} =~ (vi| emacs) ]]; then
Original file line number Diff line number Diff line change @@ -5,14 +5,13 @@ about-plugin 'improve history handling with sane defaults'
5
5
# variable when the shell exits, rather than overwriting the file.
6
6
shopt -s histappend
7
7
8
- # erase duplicates; alternative option: export HISTCONTROL=ignoredups
9
- export HISTCONTROL=${HISTCONTROL:- ignorespace: erasedups}
8
+ # 'ignorespace': don't save command lines which begin with a space to history
9
+ # 'erasedups' (alternative 'ignoredups'): don't save duplicates to history
10
+ # 'autoshare': automatically share history between multiple running shells
11
+ : " ${HISTCONTROL:= ignorespace: erasedups: autoshare} "
10
12
11
13
# resize history to 100x the default (500)
12
- export HISTSIZE=${HISTSIZE:- 50000}
13
-
14
- # Flush history to disk after each command.
15
- export PROMPT_COMMAND=" history -a;${PROMPT_COMMAND} "
14
+ : " ${HISTSIZE:= 50000} "
16
15
17
16
function top-history() {
18
17
about ' print the name and count of the most commonly run tools'
Original file line number Diff line number Diff line change @@ -584,6 +584,7 @@ function aws_profile {
584
584
}
585
585
586
586
function _save-and-reload-history() {
587
- local autosave=${1:- 0}
588
- [[ $autosave -eq 1 ]] && history -a && history -c && history -r
587
+ local autosave=" ${1:- ${HISTORY_AUTOSAVE:- 0} } "
588
+ [[ ${autosave} -eq 1 ]] && local HISTCONTROL=" ${HISTCONTROL:- }${HISTCONTROL: +: } autoshare"
589
+ _bash-it-history-auto-save && _bash-it-history-auto-load
589
590
}
You can’t perform that action at this time.
0 commit comments