mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2026-01-02 08:34:44 +01:00
do_sudo: new sudo alias to handle alias expansion
This commit is contained in:
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'
|
||||
Reference in New Issue
Block a user