Frank Joe Frank Joe - 6 months ago 13
Bash Question

How to prevent a user from using ctrl-c to stop a script?

I load a script in .bash_profile and this script will ask for right password whenever a user opens a terminal window. If the user enters a wrong code, the script will run

exit

to stop the current terminal.

if [ code = "980425" ]; then
echo hello
else
exit
fi


But I realize that the user can always use

ctrl-c


to stop the script and enter the terminal.
How to avoid that?

Answer

You can always trap SIGINT:

trap 'echo got SIGINT' SIGINT

Once you're done, reinstall the default handler again with

trap SIGINT

See the POSIX spec for trap for details. This works in all Bourne shells, not just bash.