しぐまろぐ

勉強したことや読んだ本について書きます。

MacOSでGNU関連コマンドを使えるようにする

経緯

シェルワンライナー*1に取り組むにあたり、推奨環境のUbuntuを用意できず、MacOSで行なっていたのだが、MacOSであるが故に本通りの結果を得られないことが何度かあった。

そこへカツニャリさん (id:papiro)に本ブログのコメント欄で以下の通りご教示いただいた。

本の問題はUbuntu環境を前提にしているので、GNU関連のコマンドを使っています。出来ればUbuntuが良いですが、macOSの場合はHomebrewで下記のパッケージを入れておくと良いです。
bashcoreutils、findutils、gawkgnu-sedgrep
bashmacOS標準付属のものがバージョンが古いためです。インストール後terminalで/usr/local/bin/bash を起動してください。
coreutilsGNU版のlsやdateコマンドなどが使えます。コマンド名の頭に'g'が付きます。例えばglsやgdateなど。
findutils以下も同様にGNU版のコマンドで、頭に'g'が付きます。

教えていただいた通り、各パッケージを導入していったので、ものすごく簡単ではあるが一応メモを残しておきたい。

インストール

coreutils、findutils、gawkgnu-sed

それぞれ以下でインストールするだけでよかった。

$ brew install [パッケージ名]

grep

問題7を解いた際にすでにインストールしていた。
シェル・ワンライナー160本ノック 問題7 - しぐまろぐ

bash

まずバージョン確認。

$ bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin22)
Copyright (C) 2007 Free Software Foundation, Inc.

インストール。

$ brew install bash

インストールしただけではバージョンは変わらない。

$ which -a bash
/opt/homebrew/bin/bash
/bin/bash

/opt/homebrew/bin/bashがさっきインストールした新しい方。これを実行する。

$ /opt/homebrew/bin/bash

最新の方が適用された。

$ bash --version
GNU bash, バージョン 5.2.15(1)-release (aarch64-apple-darwin22.1.0)
Copyright (C) 2022 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

参考サイト

qiita.com

エイリアス設定

また、各コマンドは頭にgをつけて実行する必要があるため、頻繁に使うものについては、~/.bashrcにaliasを設定しておき、gがなくても実行できるようにした。

参考サイト

zenn.dev



最後になりますが、カツニャリさん、いつも初歩的な疑問にお答えくださりありがとうございます。
よろしければ、どうか無理のない範囲でこれからもよろしくお願いします。

*1:『1日1問、半年以内に習得 シェル・ワンライナー160本ノック』(技術評論社