mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-27 16:20:07 +00:00
do_sudo: new sudo alias to handle alias expansion
This commit is contained in:
parent
3c209b00d6
commit
d05feb1f8e
2 changed files with 33 additions and 0 deletions
6
plugins/do_sudo/README.md
Normal file
6
plugins/do_sudo/README.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# `do_sudo` plugin
|
||||||
|
|
||||||
|
This plugin provides a sudo wrapper that handles alias expansion and avoids
|
||||||
|
being broken by `nocorrect` `noglob` from other aliases.
|
||||||
|
|
||||||
|
Modified from the script by [Wayne Davison](https://www.zsh.org/mla/users/2008/msg01229.html).
|
27
plugins/do_sudo/do_sudo.plugin.zsh
Normal file
27
plugins/do_sudo/do_sudo.plugin.zsh
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
if [[ "$ENABLE_CORRECTION" == "true" ]]; then
|
||||||
|
alias sudo='nocorrect noglob _do_sudo '
|
||||||
|
else
|
||||||
|
alias sudo='noglob _do_sudo '
|
||||||
|
fi
|
||||||
|
|
||||||
|
function _do_sudo() {
|
||||||
|
integer glob=1
|
||||||
|
local -a run
|
||||||
|
run=( command sudo )
|
||||||
|
while (($#)); do
|
||||||
|
case "$1" in
|
||||||
|
command|exec|-) shift; break ;;
|
||||||
|
nocorrect) shift ;;
|
||||||
|
noglob) glob=0; shift ;;
|
||||||
|
*) break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
if ((glob)); then
|
||||||
|
PATH="/sbin:/usr/sbin:/usr/local/sbin:$PATH" $run $~==*
|
||||||
|
else
|
||||||
|
PATH="/sbin:/usr/sbin:/usr/local/sbin:$PATH" $run $==*
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
command -v _sudo >/dev/null 2>&1
|
||||||
|
[[ $? -eq 0 ]] && compdef _sudo '_do_sudo'
|
Loading…
Reference in a new issue