checkbashisms - check for bashisms in /bin/sh scripts
checkbashisms script ...
checkbashisms --help|
--version
checkbashisms, based on one of the checks from the
lintian system,
performs basic checks on
/bin/sh shell scripts for the possible
presence of bashisms. It takes the names of the shell scripts on the command
line, and outputs warnings if possible bashisms are detected.
Note that the definition of a bashism in this context roughly equates to "a
shell feature that is not required to be supported by POSIX"; this means
that some issues flagged may be permitted under optional sections of POSIX,
such as XSI or User Portability.
In cases where POSIX and Debian Policy disagree,
checkbashisms by default
allows extensions permitted by Policy but may also provide options for
stricter checking.
-
--help, -h
- Show a summary of options.
-
--newline, -n
- Check for "echo -n" usage (non POSIX but
required by Debian Policy 10.4.)
-
--posix, -p
- Check for issues which are non POSIX but required to be
supported by Debian Policy 10.4 (implies -n).
-
--force, -f
- Force each script to be checked, even if it would normally
not be (for instance, it has a bash or non POSIX shell shebang or appears
to be a shell wrapper).
-
--lint, -l
- Act like a linter, for integration into a text editor.
Possible bashisms will be printed in stdout, like so:
- {filename}:{lineno}:1: warning: possible bashism;
{explanation}
-
--extra, -x
- Highlight lines which, whilst they do not contain bashisms,
may be useful in determining whether a particular issue is a false
positive which may be ignored. For example, the use of "
$BASH_ENV" may be preceded by checking whether "
$BASH" is set.
-
--early-fail, -e
- Exit right after a first error is seen.
-
--version, -v
- Show version and copyright information.
The exit value will be 0 if no possible bashisms or other problems were
detected. Otherwise it will be the sum of the following error values:
- 1
- A possible bashism was detected.
- 2
- A file was skipped for some reason, for example, because it
was unreadable or not found. The warning message will give details.
- 4
- No bashisms were detected in a bash script.
lintian(1)
checkbashisms was originally written as a shell script by Yann Dirson
<
[email protected]> and rewritten in Perl with many more
features by Julian Gilbey <
[email protected]>.