macOS Monterey→macOS Sonoma 14.4.1 をupdateした結果 ls command などkilled...
表題の件について、なかなか解決しにくい事象だったので記事にまとめる。
**- 結論**
旧Mac os Intelのコマンドが入った**/usr/local/bin**で上書きされてしまい、ls commandなどが使えなくなっていた。
- 経緯
ReactNativeを学習するために、XcodeというAPPをインストールするためにOS versionをupdate.
- 行ったこと && 解決の糸口
-
1.再インストール
- macOS Sonomaを再度インストールしました。が、解決されず...
-
2.どこがおかしいのか...
- bin/ が消されている可能性
こちらを疑いました。
echo $PATH
で中身を確認する。
パスの上書きをされている可能性があり,
中身をチェック。export PATH="/opt/homebrew/opt/php@7.4/bin:/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:****
- bin/ が消されている可能性
解決の糸口
export PATH=$PATH:/path/to/dir
PS.
原因を追求するために, lsコマンドなど実行しないといけないため
使えなくなったコマンドはフルパスで解決していこう!
フルパスとは
コマンドがあるディレクトリと該当のファイルをフルパスで指定する意味のこと
使えなくなっても、フルパスを実行すれば、ファイルやシェルの中身は解決できる
- 3.それでもなおらず....
OSシステムに問題があるのか、個人設定に問題があるのか??を切り分けるために
mv ~/.zshrc ~/.zshrc.old
を実行。
-
4.じゃあどこに問題があるの??
結論
-intel MacとM1以降のMacはCPUの種類が違うので、本来なら同じバイナリは実行できない。
何らかの流れで intel版のbrewをインストールしてしまい,
intel版の方がM1 Macよりも優先されてしまった。$PATHの中身で
旧intel版の方が優先されてしまっていた。優先されてしまった背景はOS updateしたタイミングでだろう。
同じlibsystemのときは動いてたけど、アップデートで変わったからリンクできなくてkill....の可能性がある。
---上記の結果を把握し行ったこと---
1. /usr/local/bin を /usr/local/bin2 にリネーム。
2. 空の /usr/local/bin を作成。
3. ~/.zprofile のおかしな行を直す
1,2は、intel版のコマンドを退避させ、新規作成。
3は無駄なスペースなどがあり、対応。
:::
-**まとめ**
PATHの中身は綺麗に書くこと。
無駄な空白や書き方のミスは動かない要因になる。
Mac OSが異なるバイナリはうまく動かない原因になるため, バイナリをインストールするときは注意して実行することが重要である。
Discussion