Skip to content
Matthew O. Persico edited this page Mar 31, 2018 · 32 revisions

Shellcheck directives allow you to control how shellcheck works, and take the form of comments in files:

hexToAscii() {
  # shellcheck disable=SC2059
  printf "\x$1"
}

Supported directives are

disable

Prevent shellcheck from processing one or more warnings:

# shellcheck disable=code[,code...]
statement_where_warning_should_be_disabled

source

Tell ShellCheck where to find a sourced file (since 0.4.0):

# shellcheck source=src/examples/config.sh
. "$(locate_config)"

shell

Specify the shell for a script (similar to the shebang, if you for any reason don't want to add one) (since 0.4.5):

# shellcheck shell=sh
echo foo &> bar

Directives that replace or are immediately after the shebang apply to the entire script. Otherwise, they are scoped to the structure that follows it (such as all branches of a case statement, or an entire function).

Note: There is a known bug in the current version when directives appear within then clauses of if blocks that causes Shellcheck to report SC1072 on otherwise valid code. Avoid using directives within then clauses - instead place them at the top of the if block or another enclosing block. This is fixed on the online version and the next release.

There is no support for scoping a directive to the first structure of the script. In these cases, use a dummy command true or : and then add directives, such as

# This directive applies to the entire script
# shellcheck disable=2086
true

# This directive only applies to this function
# shellcheck disable=2043
f() {
  ...
}

Silencing parser errors is purely cosmetic; any parser error found will still stop ShellCheck at the point of the error.

Clone this wiki locally

⌂ 换网址