@@ -12,7 +12,7 @@ export _gnu_verbose=0
12
12
export _gnu_shell=' '
13
13
while [ $# -gt 0 ]; do
14
14
case " $1 " in
15
- load|unload|on|off|status|env|bashrc|zshrc|autorc |help)
15
+ load|unload|on|off|status|env|rcfile |help)
16
16
_gnu_action=" $1 " ;;
17
17
--verbose|-v) _gnu_verbose=1;;
18
18
--help|-h) _gnu_action=' help' ;;
@@ -102,13 +102,14 @@ _gnu_unload() {
102
102
echo ' typeset -pf gnu >/dev/null 2>&1 && unset -f gnu'
103
103
}
104
104
105
- # Used to add/ remove entries from PATH/ MANPATH
105
+ # Used to remove or prepend entries from PATH / MANPATH
106
106
_gnu_pathspec () {
107
107
pathvar=" $1 " # PATH or MANPATH
108
- exclude=" $2 " # path to be removed from the env var
109
- if [ -n " ${3:- } " ]; then add=" $3 :" ; else add=' ' ; fi # Optional path to add
108
+ action=" $2 " # + to prepend and cleanup, - to cleanup (remove) only
109
+ exclude=" $3 " # path to be added / cleaned from the env var
110
+ if [ " $action " == ' +' ]; then add=" $3 :" ; else add=' ' ; fi
110
111
echo -n ' export ' $pathvar ' ="' $add ' $('
111
- echo -n ' echo "$' $pathvar ' "' # Gets PATH/ MANPATH in : format
112
+ echo -n ' echo "$' $pathvar ' "' # Gets PATH / MANPATH in : format
112
113
echo -n " |tr : '\n'" # Turns : into newlines
113
114
echo -n " |grep -vxF '$exclude '" # Removes the path from entries
114
115
echo -n ' |uniq' # Removes duplicate entries
@@ -125,28 +126,30 @@ _gnu_on() {
125
126
126
127
_gnu_off () {
127
128
_gnu_warn
128
- _gnu_pathspec PATH $_gnu_base /bin
129
- _gnu_pathspec MANPATH $_gnu_base /share/man
129
+ _gnu_pathspec PATH - $_gnu_base /bin
130
+ _gnu_pathspec MANPATH - $_gnu_base /share/man
130
131
echo ' if [ "$MANPATH" = "" ]; then unset MANPATH; fi'
131
132
}
132
133
133
134
_gnu_env () {
134
- _gnu_pathspec PATH $_gnu_base /bin $_gnu_base /bin
135
- _gnu_pathspec MANPATH $_gnu_base /share/man $_gnu_base /share/man
135
+ _gnu_pathspec PATH + $_gnu_base /bin
136
+ _gnu_pathspec MANPATH + $_gnu_base /share/man
136
137
}
137
138
138
139
_gnu_rcfile () {
139
140
local rcfile=" ${1:- $HOME / .${_gnu_shell} rc} "
140
- grep -xFq ' eval "$(gnu on)"' " $rcfile " && return
141
+ if grep -Eq ' gnu (on|load|env)' " $rcfile " ; then
142
+ echo " The gnu shell extension is already in $rcfile "
143
+ return
144
+ fi
141
145
echo " Adding gnu shell extension loader to $rcfile "
142
146
echo ' eval "$(gnu on)"' >> " $rcfile "
143
147
}
144
148
145
149
case " $_gnu_action " in
146
150
help) _gnu_help;;
147
151
install) /bin/bash -c " $( curl -fsSL $_gnu_url ) " ;;
148
- * shrc) _gnu_rcfile " $HOME /.$_gnu_action " ;;
149
- autorc) _gnu_rcfile;;
152
+ rcfile) _gnu_rcfile;;
150
153
load) if _gnu_eval; then eval " $( _gnu_load) " || _gnu_fail
151
154
else _gnu_load; fi ;;
152
155
unload) if _gnu_eval; then eval " $( _gnu_unload) " || _gnu_fail
0 commit comments