EC2(Amazon Linux 2)にzshを入れてテーマを設定する時の手順

## おことわり

EC2(Amazon Linux 2)にzshを入れる時のためのメモです。
「本番環境だよ！」という情報などを誰にでもわかりやすくするためにzshのテーマも設定します。
便利にするための設定も行います。

## 前提

- 使用しているEC2インスタンスにGitがインストールされていること。
- 作業は全てssh接続したEC2内で行う。

## 手順

### 流れ

1. zshインストール
1. zshのテーマと設定変更
1. ログイン時のシェルをbash→zshに変更

### zshをインストールする

存在するシェルの一覧を表示し、zshが**ない**ことを確認する。

```sh
$ cat /etc/shells

# 結果
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
```

zshをインストールする。

```sh
$ sudo yum install zsh
```

### zshのテーマを変える

インストールしたzshを使う。

```sh
$ zsh
```

下記が出るので(0)を選択する。

```
This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

--- Type one of the keys in parentheses --- 
```

ホームディレクトリに.zshrcが作られたけど要らないので削除する。

```sh
$ rm ~/.zshrc
```

Preztoを入れる。**zshを使っている状態**で、下記のコマンドを打つ。

```sh
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```

zshを再起動する。

```sh
$ exit
$ zsh
```

![スクリーンショット 2019-07-14 13.06.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265900/29f8e537-e397-86f3-c78c-b8e9325427d4.png)
zshのテーマが変わっていることが分かる。この画像のテーマは`sorin`というテーマ。
`prompt -p`でテーマの一覧を参照し、良さげなテーマの名前を覚えておく。

**[注意]** ここで`prompt -p`が出てこない場合は、インストールされたzshが古い可能性があります。
preztoのissueに[こんなの](https://github.com/sorin-ionescu/prezto/issues/1851)があります。
ここでpromptが出てこなくても大きな問題はありませんが、気になる方はより新しいzshをインストールし直すとよいかもしれません。シェルを変える際はバックアップ用のセッションを残しておくなどして、ログインできなくならないよう慎重に作業をしましょう。

```sh
$ prompt -p
```

![スクリーンショット 2019-07-14 13.03.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265900/45a4f6d2-4ee3-aa0a-e36f-74072b197f77.png)
今回は、`fade`の`red`にする。なんとなく本番環境っぽさが出ていて誰にでも分かりやすい気がしたため。
ホームディレクトリにいつの間にやらできている`.zpreztorc`を編集する。

```sh
vi ~/.zpreztorc
```

テーマをsorinからfade redに変更する。

```sh:.zpreztorc
# before
# zstyle ':prezto:module:prompt' theme 'sorin'

# after
zstyle ':prezto:module:prompt' theme 'fade' 'red'

```

補完とシンタックスハイライトを有効にする。

```sh:.zpreztorc
zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'syntax-highlighting' \  # 追加
  'autosuggestions' \  # 追加
  'prompt'
```

保存して閉じる。
zshを再起動すると、設定が有効になっている。

```sh
$ exit
$ zsh
```

### ログイン時のシェルを変更する

これでzshの準備は完了したので、ログイン時のシェルをbashからzshに変更する。
けれどもAmazon Linux 2はデフォルトでchshが使えないので、最初にインストールする必要がある。

```sh
sudo yum install util-linux-user
```

chshが使えるようになったので、シェルを変える。

```sh
# zshのパスを確認する
$ cat /etc/shells

$ sudo chsh ec2-user

# フルパスを入力する
/bin/zsh
```

## 参考

[Amazon AWS EC2 でzshを使ってみよう](https://tech.guitarrapc.com/entry/2013/04/20/220409)
[お前らのターミナルはダサい](https://qiita.com/kinchiki/items/57e9391128d07819c321)
[【EC2】Amazon Linux2でchshコマンドを使えるようにする](https://public-constructor.com/ec2-amazon-linux2-chsh/)