CentOS7 に Emacs 26.3 をインストールして ShellCheck を Emacs 内でオンザフライ実行する

CentOS7 で利用可能な emacs パッケージは標準 RPM では 24.3.任意のバージョンをインストールしたいので,ここでは 26.3 をソースからビルドする(emacs で flycheck パッケージを使用するが,flycheck 自体は 24.3 以降で利用はできる).

開発ツールのインストール

$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install gnutls-devel ncurses-devel

ソースの入手

$ curl -LO https://ftpmirror.gnu.org/emacs/emacs-26.3.tar.gz

ソースの展開

$ zcat emacs-26.3.tar.gz | tar xf -

make/make install

ここでは Emacs はターミナル内でのみ使用することにし,X-Window 上の GUI は使用しないことにするので --with-x=no を指定する.

$ cd emacs-26.3
$ configure --with-x=no --without-pop
$ make
$ sudo make install

インストール完了

$ which emacs
/usr/local/bin/emacs
$ emacs --version
GNU Emacs 26.3
Copyright (C) 2019 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

ShellCheck をインストール

$ sudo yum -y install ShellCheck-0.8.0-1.x86_64.rpm

Emacs の設定

emacs 初回起動時にホームディレクトリに .emacs.d が作成される.init.el は手動作成する.

$ emacs # 起動して何もせず終了する
$ cat <<EOF > ~/.emacs.d/init.el
(require 'package)

(add-to-list 'package-archives
             '("MELPA Stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
EOF

このあと emacs をまた起動し,M-x package-install[RET] し,Install package:flycheck[RET] を入力する.これで flycheck が ~/.emacs.d/ にダウンロードされ,init.el に必要な設定が追記される.

最後に emacs をまた終了し,以下のように sh-mode で flycheck が自動起動するよう設定を .emacs.d/init.el に追記する.

echo "(add-hook 'sh-mode-hook 'flycheck-mode)" >> ~/.emacs.d/init.el

これで次回 emacs を起動してシェルスクリプトを作成または編集するときには,バッファ内コンテンツに対して ShellCheck が稼働して,引っかかった部分を太字や下線でハイライトして見せてくれるようになる.(https://www.flycheck.org/en/latest/languages.html にある通り,デフォルトで sh-shellcheck が入っているので,flycheck に ShellCheck 用の設定を追加で施す必要はない)