🎉
[シェル] MacのComputerName / LocalHostName / HostNameをターミナルで変更する
はじめに
Macではコンピュータを特定するために、ComputerName, LocalHostName, HostNameの3種類使用されています。
Macの「共有」環境設定パネルからローカルホスト名・ローカルネットワーク名を変更することができましたが、ホスト名は(おそらく?)環境設定パネルから変更することができませんでした。
ローカルホスト名またはローカルネットワーク名は、「共有」環境設定パネルの一番上にあるコンピュータの名前の少し下に表示されます。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