
每次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,並且看起來就像什麼也沒發生一樣,就像舊的一樣。
這種方法確實有一個缺陷,您將丟失先前輸入的變數賦值,也許我們可以解決這個問題。但如果你對此很滿意,那就是這樣了。
無論如何,您都可以修改此程式碼以滿足您的需求。