Use a trap to release the lock, this way the lock would be more robustly
released when the exit hook is called, even if some commands in the exit
hook failed.
LOCKPID=$(cat "$LOCKDIR/pid")
[ "$LOCKPID" = $PPID ] || { echo "The enter script was launched from another process. Unlocking aborted." >&2; exit 1; }
-# Do stuff here
+# Use a trap to release the lock even if the commands below fail.
+trap 'rm -rf "$LOCKDIR"' EXIT
+trap 'exit 2' HUP INT QUIT PIPE TERM
-rm -rf "$LOCKDIR"
+# Do stuff here.