macOS でボリューム名を変えた時の修正・確認箇所


macOS のボリューム名（ドライブ名）にスペースが入っていたので変更したら想像通り面倒だったので、安定して稼働するまでの過程を記録していきたいと思います。

## 前提条件

|変更前|変更後|備考|
|:--|:--|:--|
|Macintosh HD|Macintosh_HD|OS のボリューム名|
|Macintosh SD|Macintosh_SD|SDカードのボリューム名|

- 空き容量確保のため、メインのアカウントのホームディレクトリを外部ドライブ（SDカード）に変更している。
- macOS High Sierra（OSX 10.13.3）
- MacBookPro（Retina, 13-inch, Early 2015）

## ボリューム名の変え方

### 簡単な方法
Finder でドライブ名を変えても良いのですが、外部ドライブなど Finer から変更できないドライブもあるので、**ディスクユーティリティ上から変えた方が１画面で済み楽で良い**と思います。

### コマンドで変える方法

```bash
$ /usr/sbin/diskutil rename "Macintosh HD" "Macintosh_HD"
```

### ボリューム名変更時のTip

まったく違う名前にするよりは、スペースをアンダーバーに変更する程度にしておくと検索や修正が楽です。

## ボリューム名変更後の確認・修正箇所

### ホームディレクトリ

[アップルメニュー] - [システム環境設定] - [ユーザとグループ] -（ロック解除）- 現在のユーザを右クリック - [詳細オプション...] の「ホームディレクトリ」の項目を確認・修正します。キーチェーンで iCloud のパスワードうんぬんと出てきた場合は、おそらくここが原因です。

### First Aid

command + R で[復元モードで起動](https://support.apple.com/ja-jp/HT201255)し、ディスクユーティリティで各ドライブ（パーティション）に「First Aid」でカタログなどの修復をかけ、再起動する。

### `.bash_profile` で環境変数の変更

```bash
$ vi .bash_profile
```

### `export` で環境変数の確認

```bash
$ export -p
```

`.bash_profile`の変更が反映されていない場合は、ターミナル/コンソールを一旦終了し、再度開いてみてください。反映されない場合は、`.bash_profile`の中身を再確認し、OS を再起動してみます。それでも反映されない場合は、[別の箇所で環境変数が設定されている](http://takuya-1st.hatenablog.jp/entry/2013/12/14/040814)可能性があります。

### 環境変数に依存しない絶対パスを含むファイルの検出

#### 旧ボリューム名を含むファイルのチェック

`mdfind` コマンドでファイル名・ディレクトリ名・ソースコードに含まれるファイルのフルパスをリストアップし、必要なものは適宜修正していきます。

```
$ mdfind "Macintosh HD"
```

Spotlight で検索して「Finder ですべてを表示」させても良いと思います。

### キャッシュの更新

ドライブ名変更後、しばらくは問題ないのですがアイコンやフォントのキャッシュがおかしくなるので、[セーフモード](https://support.apple.com/ja-jp/HT201262)で一度起動して、フォント・アイコン・カーネル・システムなどのキャッシュをクリアして更新させます。

### 別ドライブに置いてあるアプリ

容量確保のため別ドライブに移動したアプリがある場合、アプリが起動しなくなることがあります。

ドライブ名の変更後、**アプリを開く前**に本体ドライブ（OSの入っているドライブ）の「アプリケーション」フォルダに一旦戻し、そこで一度起動してから再度別ドライブに移動するようにしてください。

これは、本体ドライブの「アプリケーション」フォルダ内から正常起動されたアプリは個別 ID がアプリに振られ紐付けられます。そのため、**どこに移動したのか OS が記憶している**ので別ドライブに移せるのですが、古いドライブ名で登録されているため、一度本体に移動させることで移動先を更新させます。

### アプリの個別情報

<img width="402" alt="スクリーンショット 2018-03-03 21.45.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/78776/af761d09-e61c-5324-8c78-f5be91010718.png">

おそらく、この**アプリが各々保持している情報を修正していくのが一番面倒**だと思います。

そして、おそらくアプリを再インストールしてしまった方が楽です。つまり、アプリ側で設定をエクスポートできるのであれば、一旦エクスポートして、アプリを再インストール後、再インポートするのがベストでしょう。

問題は「それが出来ないから大変」だったりもします。

エディタなどの、使用済みファイルの履歴やデフォルト保存先のパスなど、アプリケーションごとにファイルの保存先をキープ（保持）している場合、`json`ファイルなどに保存されていればいいのですが、「GitHub Desktop」や「Kobito」などのように `SQLite` などの DB に保持している場合はいささか厄介です。


無理やり SQLite コマンドを使って変更しても、改ざん防止を施している場合むしろ動かなくなるので、**面倒ですがアプリを起動してファイルを１つ１つ改めて開く必要があります**。アプリによってはファイルが見つからないと「再リンク先」を指定できるものもあります。

## 所感

ボリューム名を「Macintosh HD」「Macintosh SSD」「Macintosh SD」などにしていたのですが、名前にスペースが入っているため、動かないアプリやプログラム、`brew`でインストールできないものがあったので変更したかったのですが、「色々と芋づる式で動かなくなるんだろうなぁ」と躊躇していました。

しかし、OS を入れ直すのは簡単なのですが、**後学のためと思い思い切って変更してみました**が、やはり大変だったという話し。

## 参考文献

- [How to rename a partition in OS X?](https://superuser.com/questions/315220/how-to-rename-a-partition-in-os-x) @ StackExchange
- [How to change Logical Volume name](https://apple.stackexchange.com/questions/283553/how-to-change-logical-volume-name) @ StackExchange
- [change volume name](https://discussions.apple.com/thread/3655215) @ Official Apple Support Communities
- [PATHを通すために環境変数の設定を理解する (Mac OS X)](https://qiita.com/soarflat/items/d5015bec37f8a8254380) @ Qiita
- [path_helperについて。Mac OSX 版](http://takuya-1st.hatenablog.jp/entry/2013/12/14/040814) @ それマグで！
- [Macアプリのアイコンがキャッシュで変わらない時の対処法](https://qiita.com/seiyavw/items/71d75d1bf8218ca06974) @ Qiita