每次exit
在命令提示符中键入命令时,我都试图收到确认消息。为此,我尝试trap
在.bashrc
文件中使用,但似乎 trap 不是一个解决方案,因为它无论如何都会运行原始命令。有什么办法可以让我拥有这个吗?
这是我的 bashrc 脚本代码,无法完成工作:
function _exit() # Function to run upon exit of shell.
{
read -p "${RED}Are you sure? " REPLY
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo -e "${RED}Bye${NC}"
exit 0
else
#I do not know what to do here to not exit
return
fi
}
trap _exit EXIT
答案1
如果 shell 是zsh
or bash
(尽管不在sh
模式下),则创建exit
一个函数。在或中(尽管不在 POSIX shell 中),函数优先于 shell 内置函数(甚至是特殊的函数,如exit
) 。因此,只需将函数重命名为并在函数内使用即可。当然,否则你就会陷入无休止的递归。zsh
bash
exit
command exit
答案2
重载功能exit()
不适合该^D
场景。那么,我们来谈谈trap
。
你的else
子句应该是一些可以保留 bash 或忽略退出信号的东西。我也不知道该怎么做。
但现在,我认为你可以重新打开 bash。
如果您将您的else
条款替换为:
echo
history -a
bash
然后,如果您在提示符下取消退出,则会重新打开一个新的 bash,并且看起来就像什么也没发生一样,就像旧的一样。
这种方法确实有一个缺陷,您将丢失之前输入的变量赋值,也许我们可以解决这个问题。但如果你对此很满意,那就是这样了。
无论如何,您都可以修改此代码以满足您的需求。