はじめに
hkob の雑記録の第8回目は、学生に作成させる bootstrap.sh
の初期部分の解説を更新しました。ここはあまり macOS のアップデートに影響がないのでほぼそのまま使えます。
シェルスクリプトの解説
一番最初にターミナルを起動し、そこから先は全てターミナルで処理します。まだエディタもインストールされていないので、全てコマンドだけで処理します。テキストエディトはあるのですが、せっかくなので UNIX 系のコマンドを学んでもらいたいためです。ここで実行しているのは以下のコマンド群です。
touch
でbootstrap.sh
を作成ls -l
でファイルの状況を確認chmod +x
で実行属性を付与ls -l
で属性の変化を確認cat > bootstrap.sh
で shebang と echo コマンドを追加cat
で内容を確認./bootstrap.sh
で実行
これらでまずシェルスクリプトについての基礎を学びます
コマンドラインツールのインストール
その後、作成した bootstrap.sh
を上書きしてコマンドラインツールのインストールを作成します。ここでは、冪等性について解説しています。コマンドラインツールは一度インストールしたら再度インストールする必要はないので、コマンドの存在を確認した上でない場合だけインストールするようにしたいからです。そのためのスクリプトは以下のようになっています。このスクリプトにもいろいろなものを仕込んでいて、指導書ではそれを一行ずつ解説しています。特に xcode-select
の部分の ||
は冪等性のために記述している部分です。コマンドラインツールがインストールされていれば、後ろの {}
内は実行されません。
#!/usr/bin/env bash # エラーがあったらそこで即終了、設定していない変数を使ったらエラーにする set -eu # is_arm という関数を用意しておく。毎回 uname -m を実行するのは莫迦らしいので、UNAME 環境変数で判断 is_arm() { test "$UNAME" = "arm64"; } # アーキテクチャ名は UNAME に入れておく UNAME=$(uname -m) # dotfiles の場所を設定 DOTPATH=$HOME/dotfiles # 入っていなければ、コマンドライン・デベロッパツールをインストール xcode-select -p 1>/dev/null || { echo "Installing Command line tools ..." xcode-select --install # その場合、Apple Silicon Mac では Rosetta2 もインストールされていないと思われるので、こちらもインストール if is_arm; then # ソフトウェアアップデートで Rosetta2 をインストール。面倒なのでライセンス確認クリックをスキップ echo "Installing Rosetta2 ..." /usr/sbin/softwareupdate --install-rosetta --agree-to-license fi echo "Please exec ./bootstrap.sh again in $DOTPATH after installing command-line-tools and Rosetta2(Apple Silicon Mac only)." exit 1 }
おわりに
今回は bootstrap.sh
のスタート部分を解説しました。このページは解説がかなり長いので、スクリプトはここまでです。次のページからいよいよ homebrew のインストールになります。この調子で執筆を続けていきます。