1 SC3047
Vidar Holen edited this page 2020-09-01 18:11:01 -07:00

In POSIX sh, trapping ERR is undefined.

(or "In dash, ... is not supported." when using dash)

Also applies to RETURN and DEBUG.

Problematic code:

#!/bin/sh
trap 'Command failed with $?' ERR

Correct code:

Switch to a shell like ksh or bash that does support the kind of trap you want:

#!/bin/bash
trap 'Command failed with $?' ERR

Otherwise, rewrite the script to not rely on the trap.

Rationale:

You are trying to install a trap that is not supported by your current shell (dash or POSIX sh). There is no simple replacement. The script should be rewritten to avoid depending on the trap, or simply be run with a shell that supports it.

Exceptions:

If you only intend to target shells that supports this feature, you can change the shebang to a shell that guarantees support, or ignore this warning.

You can use # shellcheck disable=SC3000-SC4000 to ignore all such compatibility warnings.

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!