1+ set -o noclobber  # do not overwrite existing files
2+ set -o emacs  # use the emacs shortcuts
3+ 
4+ # function to help remind users about the shortcuts
5+ repronim_bashrc_help() {
6+ LINE="Commandline/Cursor Editing Shortcuts::
7+  Ctrl-a: Go to the beginning of the line you are currently typing on
8+  Ctrl-e: Go to the end of the line you are currently typing on
9+  Ctrl-u: Remove text on the line before the cursor position
10+  Ctrl-h: Remove preceding symbol (same as backspace)
11+  Ctrl-w: Delete the word before the cursor
12+  Ctrl-k: Remove text on the line after the cursor position
13+  Ctrl-t: Swap the last two characters before the cursor
14+  Alt-t:  Swap the last two words before the cursor
15+  Alt-f:  Move cursor forward one word on the current line
16+  Alt-b:  Move cursor backward one word on the current line
17+  Tab:    Auto-complete files, folders, and command names
18+  Ctrl-x Ctrl-e OR Alt-e in zsh:  Edit command line text in the editor (as defined by VISUAL environment variable)"
19+ 
20+ CONTROL="Job Control Shortcuts::
21+  Ctrl-c: Kill currently running process
22+  Ctrl-d: Exit current shell
23+  Ctrl-z: Suspend currently running process. fg restores it, and bg places it into background execution"
24+ 
25+ HISTORY="History Shortcuts::
26+  Ctrl-p:	Previous line in the history
27+  Ctrl-n:	Next line in the history
28+  Ctrl-r:	Bring up next match backwards in shell history"
29+ 
30+     if [ $# -lt 1 ]; then
31+         echo -e "${LINE}\n\n${CONTROL}\n\n${HISTORY}"
32+         return 0
33+     fi
34+ 
35+     while [ $# -ge 1 ]; do
36+         case "$1"
37+         in
38+         n)
39+             echo -e "$LINE\n"
40+             shift;;
41+         line)
42+             echo -e "$LINE\n"
43+             shift;;
44+         c)
45+             echo -e "$CONTROL\n"
46+             shift;;
47+         control)
48+             echo -e "$CONTROL\n"
49+             shift;;
50+         h)
51+             echo -e "$HISTORY\n"
52+             shift;;
53+         history)
54+             echo -e "$HISTORY\n"
55+             shift;;
56+         -h)
57+             echo "Options are: n, line, c, control, h, history or blank"
58+             echo "Example1: print_shortcuts n c h"
59+             echo "Example2: print_shortcuts"
60+             return 0
61+             ;;
62+         --help)
63+             echo "Options are: n, line, c, control, h, history or blank"
64+             echo "Example1: print_shortcuts n c h"
65+             echo "Example2: print_shortcuts"
66+             return 0
67+             ;;
68+         *)
69+             echo "Option $1 not recognized use (n, line, c, control, h, history or blank)"
70+             echo "type print_shortcuts -h for help"
71+             echo "Example1: print_shortcuts n c h"
72+             echo "Example2: print_shortcuts"
73+             return 1
74+             ;;
75+         esac
76+     done
77+ }
78+ 
79+ 
80+ # create an eternal bash history file
81+ # https://debian-administration.org/article/543/Bash_eternal_history
82+ 
83+ bhf="${HOME}/.bash_eternal_history"
84+ if [ ! -f "${bhf}" ]; then
85+     touch "${bhf}"
86+ fi
87+ 
88+ if [ "$(stat -c %a "${bhf}")" != "600" ]; then
89+     chmod 600 "${bhf}"
90+ fi
91+ 
92+ # NOTE: I changed ${PROMPT_COMMAND:...} to ${PROMPT_COMMAND%%;:...}
93+ # to account for trailing semicolons existing in the commmand (like if you've installed pyenv)
94+ # see: https://github.com/pyenv/pyenv-virtualenv/issues/247
95+ export HISTTIMEFORMAT="%s "
96+ 
97+ PROMPT_COMMAND="${PROMPT_COMMAND%%;:+$PROMPT_COMMAND ; }"'echo $$ $USER "$(history 1)" >> ${bhf}'
98+ 
99+ # make a terminal prompt that shows the full path: http://ezprompt.net/
100+ export PS1="\[\e[33m\]\u\[\e[m\]:\[\e[35m\]\s\[\e[m\]\[\e[37m\]:\[\e[m\]\[\e[36m\]\w\[\e[m\]\\$ "
101+ 
102+ if [ ! -z "$PS1" ]; then
103+     # include a marker into PS1 that we are in the singularity image
104+     # Since we are using git-annex forcd  images, SINGULARITY_NAME would
105+     # carry the dereferenced filename - git-annex key which is not
106+     # that useful to see, so we just add [SING] marker
107+     if ! echo "$PS1" | grep -q SINGULARITY_NAME && [ ! -z "$SINGULARITY_NAME" ]; then
108+         # proposed in https://github.com/datalad/datalad-container/pull/84
109+         if [ ! -z "${DATALAD_CONTAINER_NAME:-}" ]; then
110+             _name="$DATALAD_CONTAINER_NAME"
111+         elif echo "$SINGULARITY_NAME" | grep -q '^MD5E-'; then
112+             # singularity < 3. dereferences symlinks -
113+             # annexed keys are too long/useless in this context, we shorten
114+             _name=$(echo "${SINGULARITY_NAME##*--}" | cut -c 1-8)...
115+         else
116+             _name="$SINGULARITY_NAME"
117+         fi
118+         # strip our possible suffix
119+         _name="$(echo "$_name" | sed -e 's,.sing$,,g')"
120+         export PS1="singularity:$_name > $PS1"
121+     fi
122+ fi
123+ 
124+ # USER variable might not be defined in sanitized environment
125+ # but could be needed by some tools, e.g. FSL. See
126+ # https://github.com/kaczmarj/neurodocker/pull/270
127+ export USER="${USER:=$(whoami)}"
0 commit comments