An Emacs (26+) Flymake handler for bash/sh scripts, using ShellCheck. Installing Flymake is not necessary as it is included with Emacs itself.
Note: If you're using Emacs version 29 or higher, installing this package is not necessary, as the Flymake-Shellcheck integration is now built-in into the editor.
First, make sure ShellCheck is installed by following the installation guide. After that, you can install flymake-shellcheck
by using the package-install
command (make sure MELPA is included in your package sources):
M-x package-install
RET flymake-shellcheck
RET
Alternatively, you can just add flymake-shellcheck.el
to your load-path
.
To enable the Flymake backend whenever a bash or sh script is visited, add the following to your init.el
file:
(add-hook 'sh-mode-hook 'flymake-shellcheck-load)
If you're using use-package
, try this instead:
(use-package flymake-shellcheck
:commands flymake-shellcheck-load
:init
(add-hook 'sh-mode-hook 'flymake-shellcheck-load))
After opening a shell/sh file, remember to enable Flymake:
M-x flymake-mode
RET
- You can set the
flymake-shellcheck-program
variable to the path of the ShellCheck executable in your system, in caseexecutable-find
wasn't able to find it automatically. - You can set the
flymake-shellcheck-use-file
variable tonil
if you wish to run the syntax checker on the contents of the buffer, rather than the contents of the file on disk (default:t
). - You can set the
flymake-shellcheck-allow-external-files
variable tot
if you want to allow shellcheck to read external sources (it adds-x
as argument, described in the SC1091 docs, default:nil
).
Distributed under the GNU General Public License, version 3.