LoginSignup
1
0

More than 1 year has passed since last update.

brewコマンド実行時に表示されるPATH/brew: line xx: hogehoge: command not found の解決

Last updated at Posted at 2022-01-04

macユーザーがお世話になっているであろうbrewコマンドで起きていた、害はないが目障りだった問題を解決していく。

発生していた問題

安価で高性能と評判のM1macを使い始めて早半年、こまめに更新しないと気がすまない私は、毎度のごとくiTerm2(terminal)を開き

zsh
brew update
brew upgrade

を実行した。すると・・・

zsh
/opt/homebrew/bin/brew: line 27: readlink: command not found
/opt/homebrew/bin/brew: line 28: dirname: command not found

また君か

hogehoge: command not found

私の環境ではreadlinkdirnameがcommand not foundと表示されているが、似た問題が発生している方は、もしかしたら異なる単語が乗っているかもしれない。
brewコマンドを叩くたびに毎度毎度出てくるこれらの文は、何か問題を起こすわけではないものの、視覚的に非常に鬱陶しい存在であった。問題が起きないというのも、それはそれで怖い。
しかし、毎度毎度出てくるこの文を削除しようとggってはみたものの、出てくる事例は『homebrewそのものが見つからないの?そんなときはPATHを通しましょうね☆』というものばかりであった。ちゃうねん。
シェルスクリプトに慣れていない私にとって、zshではなくbashについての記事ばかりだったのも解決へのモチベ低下の原因だった。

原因となる場所すらいまいちわからず、「homebrewそのものに問題があるのか」「.zshrcで変なものが混じっているのか」「iTerm2の設定で何かやらかしたのか」など悶々していたが、まとまった時間の取れる正月に無事解決できたので、忘れないようにメモしていく。

解決策

結論から言うと、.zshrcファイルの記述内容に問題があった。

解決前の.zshrc
alias brew="PATH=/opt/homebrew/bin:/opt/homebrew/sbin brew"
解決後の.zshrc
alias brew="PATH=/opt/homebrew/bin:/opt/homebrew/sbin:$PATH brew"

お気づきいただけただろうか?
aliasでbrewの呼び出し宣言時に、読み込むPATHの中に$PATHがないのがいけなかったらしい。ここ以前では$PATHの宣言をしていないのに・・・
根本の原因は不明だが、ひとまずここで$PATHを再帰的に?読み込むことで、どこかにあったreadlinkdirnameを見つけてくれたのだろう。

ここに至るまでの過程

brewファイルの中身

まず原因がどこにあるのかを特定しないといけない。
そこではじめに、command not foundの出力に関わっているであろうhomebrewの中身を見ることにした。
githubにて公開されている内容と比較したものの、ローカルで使用しているものとの差異は見られず、brewに問題がないことがわかった。
また、27,8行目あたりをわからないなりに読んでみたものの、27,8行目で呼び出されているreadlinlkdirnameはそれ以前で宣言されていないこともわかった。

.zshrcの中身

brewファイル内でreadlinkdirnameが宣言されていないのであれば、どこか別のファイルから呼び出されているはずである(私がどこかで削除していなければ。もっともhomeディレクトリより下なんて怖くてあまり触らないが)。
そこで.zshrcで定義しているaliasやPATHがまずいのかもしれないと考え、.zshrcの中身を探してみることにした。
しかし怪しそうなところは見つからない。
仕方がないのでバックアップを取り、内容を徐々に削除してbrewコマンドを打つことを繰り返したものの、それでも.zshrcの中身が空になっただけであった。

判明

バックアップから復帰し、とりあえずPATH関係が怪しそうだと見ていったが、それでもわからない。alias定義部分でのPATHで、他のPATH変数で追加されている:$PATHがくっついていないので、何となく足してみたら解決した。

この記事はcorne cherry v3で書きました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0