Catalina以降のmacOSは、ZSHシェルがデフォルトになっています。 BashからZSHへの変更は別段困ることはなかったのですが、ちょっとだけ困ったのが一部のコマンドはシェルのビルトインコマンドが使われるということです。 仕事柄LinuxとmacOSを行き来していると、ちょっと動作が異なったりして困ることが稀にあります。
対処方法
次のサイトかman zshbuiltins
でマニュアルを開くことで、シェルのビルトインコマンドが確認できます。
zsh.sourceforge.io
そして表題の件ですが、マニュアルに書かれているようにdisable
の後にname
を入力すると、そのコマンドはシェルのビルトインコマンドが使わなくなります。ただしコマンド実行しただけではそのシェルが開かれている間だけ、その設定は有効になります。永続化したければ ~/.zshrc
に次の設定を書くと良いようです。
disable which disable echo
設定を書き加えた後は source ~/.zshrc
と実行します。これで、/usr/bin
などにあるコマンドが普通に呼び出されるようになります。
% which echo /opt/homebrew/opt/coreutils/libexec/gnubin/echo % echo --help Usage: echo [SHORT-OPTION]... [STRING]... or: echo LONG-OPTION
その他、必要に応じてHomebrewなどでCLIツールをインストールするといいと思います。
% brew install gnu-sed % brew install coreutils
Homebrewにはgnuから始まる幾つかのパッケージがあるので、Linuxのコマンドとの互換性に悩んだらそちらを使うのも手かもしれません。GPL-v3のソフトウェアをAppleがデフォルトバンドルしたくなかろうが、ユーザーが使うのは自由ですから。
% brew search gnu- ==> Formulae arm-linux-gnueabihf-binutils gnu-getopt gnu-tar gnupg-pkcs11-scd gnustep-make deja-gnu gnu-go gnu-time gnupg@1.4 gnutls ✔ feedgnuplot gnu-indent gnu-typist gnupg@2.2 gtk-gnutella gnu-apl gnu-prolog gnu-units gnuplot x86_64-linux-gnu-binutils gnu-barcode gnu-scientific-library gnu-which ✔ gnuplot@4 gnu-chess gnu-sed ✔ gnumeric gnuradio gnu-cobol gnu-shogi gnunet gnuski gnu-complexity gnu-smalltalk gnupg gnustep-base ==> Casks gnucash homebrew/cask-fonts/font-gnu-unifont