これは、なにをしたくて書いたもの?
EmacsでBashを書く時に、LSPを使いたいなと思いまして。
むしろ、どうして今まで使っていなかったんでしょう 笑
EmacsでLSPを使う時には、lsp-modeを使います。
Bash Language Server
lsp-modeでBashを使う時のLanguage Serverとしては、Bash Language Serverが紹介されています。
Bash - LSP Mode - LSP support for Emacs
GitHub - bash-lsp/bash-language-server: A language server for Bash
このBash Language Serverをインストールしてみましょう。
環境
今回の環境はこちら。Emacsにlsp-modeおよびsh-mode(shell-script-mode)はインストール済みとします。
$ emacs --version GNU Emacs 29.3 Copyright (C) 2024 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.
OSはUbuntu Linux 24.04 LTSです。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.3 LTS Release: 24.04 Codename: noble $ uname -srvmpio Linux 6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
またBash Language ServerのインストールにはNode.jsを使用します。
$ node --version v22.19.0 $ npm --version 10.9.3
Bash Language Serverをインストールする
Bash Language Serverはnpmパッケージとしてインストールするか、Ubuntu Linuxの場合はsnapでインストールすることになるようです。
Bash Language Server / Installation / Bash language server
その前に、依存関係としてShellCheckとshfmtをインストールすることを勧められているのでインストールしておきます。
$ sudo apt install shellcheck shfmt $ shellcheck --version ShellCheck - shell script analysis tool version: 0.9.0 license: GNU General Public License, version 3 website: https://www.shellcheck.net $ shfmt --version 3.8.0
Bash Language Server / Installation / Dependencies
あとはBash Language Serverのインストールです。
$ npm i -g bash-language-server
バージョン確認。
$ bash-language-server --version 5.6.0
Emacsに設定する
あとはEmacsに設定します。
Bash Language Server / Clients / Emacs
こんな感じでしょうか。
;; bash (use-package lsp-mode :ensure t :commands (lsp lsp-deferred) :hook (sh-mode . lsp-deferred))
確認。