SC3047 – ShellCheck Wiki

See this page on GitHub


In POSIX sh, trapping ERR is undefined.

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

Also applies to RETURN and DEBUG.

Problematic code:

trap 'Command failed with $?' ERR

Correct code:

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

trap 'Command failed with $?' ERR

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


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.


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.

ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.