trap command in Bash allows you to specify commands that will be executed when the shell receives a specific signal. This can be useful for performing tasks like cleaning up temporary files.
The trap command has the following syntax:
trap [COMMANDS] [SIGNALS]
COMMANDS is a list of one or more commands that should be executed when the shell receives the specified
SIGNALS is a list of signals for which the
COMMANDS should be executed.
trap command can be used the same ways as the
defer keyword in Go and the
cleanup pattern in Rust. They are all used to specify code that should be executed at a later time, typically for the purpose of cleaning up resources.
For example, we want to set the
core.quotepath option in Git to
false and then reset it to its original value when the script finishes executing:
# Save the current value of the core.quotepath option
original_quotepath=$(git config --get --null --local core.quotepath)
# Set the core.quotepath option to true
git config --local core.quotepath false
# Register a cleanup function to reset the core.quotepath option
if [ -n "$original_quotepath" ]
git config --local core.quotepath "$original_quotepath"
# Unset the core.quotepath option if it was originally unset
git config --unset --local core.quotepath
trap cleanup EXIT
In this way, the
trap command allows us to specify cleanup tasks that should be performed when the shell exits, regardless of whether the script exits successfully or not. This can be useful for ensuring that our scripts do not leave behind any temporary files or other resources that could potentially cause problems.