@ -11,11 +11,8 @@ if [[ ! -x "${commands[gwhoami]}" ]]; then
fi
fi
__gnu_utils( ) {
__gnu_utils( ) {
emulate -L zsh
local -a gcmds
local gcmds
local gcmd
local gcmd
local cmd
local prefix
# coreutils
# coreutils
gcmds = ( 'g[' 'gbase64' 'gbasename' 'gcat' 'gchcon' 'gchgrp' 'gchmod'
gcmds = ( 'g[' 'gbase64' 'gbasename' 'gcat' 'gchcon' 'gchgrp' 'gchmod'
@ -43,36 +40,21 @@ __gnu_utils() {
( ( ${ +commands[ $gcmd ] } ) ) || continue
( ( ${ +commands[ $gcmd ] } ) ) || continue
# This method allows for builtin commands to be primary but it's
# This method allows for builtin commands to be primary but it's
# lost if hash -r or rehash -f is executed. Thus, those two
# lost if hash -r or rehash is executed, or if $PATH is updated.
# functions have to be wrapped.
# Thus, a preexec hook is needed, which will only run if whoami
# is not already rehashed.
#
#
hash ${ gcmd [2,-1] } = ${ commands [ $gcmd ] }
hash ${ gcmd [2,-1] } = ${ commands [ $gcmd ] }
# This method generates wrapper functions.
# It will override shell builtins.
#
# eval "function $gcmd[2,-1]() { \"${prefix}/${gcmd//"["/"\\["}\" \"\$@\"; }"
# This method is inflexible since the aliases are at risk of being
# overridden resulting in the BSD coreutils being called.
#
# alias "$gcmd[2,-1]"="${prefix}/${gcmd//"["/"\\["}"
done
done
return 0
return 0
}
}
__gnu_utils
function hash( ) {
__gnu_utils_preexec( ) {
if [ [ " $* " = ~ "-(r|f)" ] ] ; then
# Run __gnu_utils when the whoami command is not already rehashed.
builtin hash " $@ "
# This acts as a sign that we need to rehash all GNU utils.
__gnu_utils
[ [ " ${ commands [whoami] } " = " ${ commands [gwhoami] } " ] ] || __gnu_utils
else
builtin hash " $@ "
fi
}
}
function rehash( ) {
autoload -Uz add-zsh-hook
builtin rehash " $@ "
add-zsh-hook preexec __gnu_utils_preexec
__gnu_utils
}