🎉

[シェル] MacのComputerName / LocalHostName / HostNameをターミナルで変更する

2021/03/29に公開

はじめに

Macではコンピュータを特定するために、ComputerName, LocalHostName, HostNameの3種類使用されています。
Macの「共有」環境設定パネルからローカルホスト名・ローカルネットワーク名を変更することができましたが、ホスト名は(おそらく?)環境設定パネルから変更することができませんでした。

image

ローカルホスト名またはローカルネットワーク名は、「共有」環境設定パネルの一番上にあるコンピュータの名前の少し下に表示されます。Bonjour対応のサービスでは、この名前でお使いのMacが識別されます。

参考: Macでコンピュータの名前またはローカルホスト名を変更する | macOSユーザーガイド

別PCの映像転送ツールからMacを指定するにはホスト名で指定する必要があり、さらに複数台で環境構築をする必要があったので、この際にターミナルからComputerName / LocalHostName / HostNameを一気に変更するようなシェルをつくりました。

実装

rename.sh
#!/bin/sh

FLG_NAME="FALSE"
while getopts n: OPT
do
  case $OPT in
    "n" ) FLG_NAME="TRUE" ; VALUE_NAME="$OPTARG" ;;
  esac
done
if [ $FLG_NAME = "TRUE" ]; then
    OLD_NAME=$(scutil --get HostName)
    sudo scutil --set ComputerName $VALUE_NAME
    sudo scutil --set LocalHostName $VALUE_NAME
    sudo scutil --set HostName $VALUE_NAME
    echo "ComputerName/LocalHostName/HostNameを [$OLD_NAME]から[$VALUE_NAME]へ変更しました"
fi

getoptsコマンドを利用して、-n "変更名"と引数を指定することにより、ComputerName/LocalHostName/HostNameを変更しています。

※ HostNameを変更前の名前として出力しています。

実行

% sh rename.sh -n "koyoarai"
ComputerName/LocalHostName/HostNameを [Mac]から[koyoarai]へ変更しました

Macの「共有」環境設定パネルや、他のPCツールから閲覧した際、無事変更を確認することができました。

参考

Discussion