Skip to content
Shaun McCance edited this page Apr 26, 2016 · 28 revisions

Shellcheck directives allows you to selectively ignore warnings, and takes the form of comments in files:

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

Supported directives are disable to disable warnings:

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

source to tell ShellCheck where to find a sourced file:

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

shell, as a top level directive, to specify the shell for a script (like the shebang, if you for any reason don't want to add one):

# shellcheck shell=sh
echo foo &> bar

Directives instead of or 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).

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, and will not make ShellCheck continue.

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally