[小ネタ]LinuxでHomebrew(Linuxbrew)を使い始めたらPATH設定問題を解決してみた

[小ネタ]LinuxでHomebrew(Linuxbrew)を使い始めたらPATH設定問題を解決してみた

2025.12.08

はじめに

最近、vibe codingでdevcontainerを使い始めて、Linuxも使うようになりました。

普段はMacOSを使っていて、Homebrewにはかなりお世話になっています。「LinuxでもHomebrewが使える(Linuxbrew)」と聞いて、早速導入してみることにしました。

インストール自体は公式のコマンド一発で完了…と思いきや、インストール後に brew コマンドを叩いても command not found

何が起きたか

Linuxbrewのインストールスクリプト(install.sh

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

を実行した後、brewコマンドを実行できなかったので、PATH 追加が必要だとわかりました。

ですが、関連ページ Homebrew on Linuxをみて、少し長い文章の後に三行のコマンドがありました。

test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.bashrc

素直な私は、とりあえず1行目の test -d ~/.linuxbrew ... を実行してみました。
…しかし、エラーが出ているように見えた
そして brew コマンドを叩いても相変わらず command not found のまま。

「あれ、うまくいかないな?」と少し戸惑いましたが、実はこれ、コマンドの意味を理解していれば当たり前の挙動だったんです。

原因と仕組み

結論から言うと、私の環境ではLinuxbrewがデフォルトの /home/linuxbrew/.linuxbrew にインストールされていた のですが、私が実行したのは 「ホームディレクトリ(~/.linuxbrew)にあるかチェックするコマンド」 だったからです。

提示されたコマンドを分解して解説します。

1. test -d は無言

test -d ~/.linuxbrew

このコマンドは「ディレクトリが存在するか」をチェックします。重要なのは、結果を標準出力には出さず、終了ステータス(Exit Code)だけで判定する という点です。

  • 存在すれば True (0)
  • 存在しなければ False (1)

画面には何も表示されないので、初心者には「無視された?」ように見えてしまいます。

2. && の挙動

test -d ... && eval ...

&& は「左側のコマンドが成功したら、右側のコマンドを実行する」という意味です。
私の環境には ~/.linuxbrew がなかったので、左側の test コマンドが False を返し、右側の eval(PATHを通す処理)はスキップされました
つまり、文字通り「何も起きなかった」わけです。

正しい解決手順

というわけで、コピペで済ませずに「自分の環境がどうなっているか」を確認しながら進めるのが正解でした。手順を整理します。

1. インストール先の確認

まずは brew のバイナリがどこにあるか ls で確認します。だいたい以下の2パターンのどちらかです。

# パターンA: root的な場所
ls /home/linuxbrew/.linuxbrew/bin/brew

# パターンB: ユーザーのホームディレクトリ
ls ~/.linuxbrew/bin/brew

私の場合は /home/linuxbrew/.linuxbrew/bin/brew にありました。

2. 現在のシェルにPATHを通す

インストール先がわかったので、対応する方のコマンドを実行します。
今回は /home/linuxbrew/... の方だったので、2行目のコマンドを実行します。

test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

これを実行した後、brew --prefix を叩いてパスが返ってくれば成功です!

root@c8e110b8ebd7:/workspaces/test-project# brew --prefix
/home/linuxbrew/.linuxbrew

3. 設定を永続化する(.bashrcへの追記)

今のままだとシェルを閉じたら設定が消えてしまうので、.bashrc に設定を書き込みます。
ここで注意なのが、必ず brew コマンドが通るようになった状態で実行すること です。

echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.bashrc

このコマンドの中にある $(brew --prefix) は、現在認識されているbrewのパスを展開してくれます。これのおかげで、.bashrc には正しいパスが書き込まれます。

4. 動作確認

最後に、実際にパッケージをインストールできるか試してみましょう。

brew install hello
✔︎ JSON API cask.jws.json                             [Downloaded   15.0MB/ 15.0MB]
✔︎ JSON API formula.jws.json                          [Downloaded   31.7MB/ 31.7MB]
==> Fetching downloads for: hello
✔︎ Bottle Manifest hello (2.12.2)                     [Downloaded   11.7KB/ 11.7KB]
✔︎ Bottle hello (2.12.2)                              [Downloaded   98.6KB/ 98.6KB]
==> Pouring hello--2.12.2.arm64_linux.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/hello/2.12.2: 57 files, 398.7KB
==> Running `brew cleanup hello`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).

無事インストールできました!

Summary

  • test -d コマンドはディレクトリがないと「無言でスキップ」するので、何も起きていないように見える。
  • 公式のNext stepsは「ユーザーのホーム」か「システムのホーム」か、あらゆる環境に対応するために列挙されているだけ。全部実行すればいいわけじゃない。
  • devcontainerなど、環境によってインストール先が変わることがあるので、まずは ls で実体を確認するのがよい。

Linuxやdevcontainer周り、まだまだ奥が深いですが、こうやって一つずつ挙動を理解していくのは楽しいですね。
同じような罠にハマった人の助けになれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事