使用 TAB 补全时如何防止 git 退出?



我希望 git 需要确认重置,所以我更新了 William Pursell 在这里写的建议,如下所示:

git() {
set -e -u
if [ $# -ge 2 ]; then
if [ "x$1" = "xreset" -a "x$2" = "x--hard" ]; then
echo "Are you sure? (Type 'yes')"
read resp || return $?
if [ "x$resp" = "xyes" ]; then
echo "Resetting"
else                
echo "NOT Resetting"
return 0
fi
fi
fi
command git "$@" || :
}

这样,如果我错误地键入命令,它不会退出控制台,但如果我尝试使用 TAB 完成,它仍然会退出。有没有办法防止这种情况?

删除set -e -u行。这些设置是 shell 会话的全局设置,而不是函数的局部设置,并且它们与 shell 完成函数冲突,这些函数不能不受未定义变量 (set -u的影响(。而且由于您的函数编写得很好,因此您既不需要set -e也不需要set -u.

最新更新