読者です 読者をやめる 読者になる 読者になる

tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

Amazon AWS EC2 でzshを使ってみよう

AWS
AWS 楽しいです。 が、/bin/bash は痒いところに手が届かない感があります。 例えば、オプションが分からなかったり、補完で一覧を出してくれなかったり。 これはPowerShellにも言えることですが、さてさて。 そこに zsh で解決すると聞いてさっそく試してみました。 takeshikには感謝です。

経緯

そしてこのトドメ 使うよ!やるよ!

zshとは

この辺の記事がとても分かり易いというか魅力を感じさせてくれます。
zshという選択肢 漢のzsh - 最強のシェル、それは「zsh」
特に、zshという選択肢にある「ファイル指定と展開」を見て興奮しました。 これだけでも入れる価値があるのに、オプション内容も出るしヒストリ追えるし、AliasもPowerShellみたいに作成できるし。

AWSのデフォルトシェル

現在のシェル環境を見ると
echo $SHELL
bashですね。
/bin/bash
存在するシェルを調べます。
cat /etc/shells
zshはありませんねー
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/ksh

zshをインストールする

インストールはyumから簡単です。
sudo yum install zsh
確認時は、問題なければ y でインストールを。 yum install後、zshがシェルに追加されます。 存在するシェルを調べます。
cat /etc/shells
zshが追加されました。
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/ksh
/bin/zsh

zshの初期設定ファイル .zshrc を作る

ホームディレクトリ (EC2の場合は、 /home/ec2-user/ あるいは ~/)に .zshrcを作成します。
cd ~
vim .zshrc
まずはテキトーに設定をいれます。
autoload -U compinit
compinit
setopt auto_cd
setopt auto_pushd
setopt correct
  それぞれこんな意味です。 補完機能の有効化
autoload -U compinit
compinit
  bash や PowerShell と違うのがこれ!始めてみて感動しないshell 好きはいないはず! [office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211376&authkey=AGQtgWHuI1pVMhk" width="292" height="320"]   cdなしでディレクトリ名でcd
setopt auto_cd
cd が無くともディレクトリ名だけで移動できます。 無くてもいいかな…   cdの履歴を利用して移動
setopt auto_pushd
cd - で直前のディレクトリに移動できます。
cd -
pushdに対するpopd がcdで実現できてるイメージですね。 履歴なので、一覧でたりとか、履歴番号指定で移動できます。   コマンドのスペルチェック
setopt correct
コマンドのミスを指摘してくれますよ! スペルミスがちょっとは安心? でも結構頭悪いかも…

素敵なzshrc

Gitでお借りしたりwww https://github.com/takeshik/configurations/blob/master/zsh/zshrc あ、Windowsでは、英語が入っていないとgit cloeしたファイルの文字コードがsjisになっててAWSに WinASCP等で転送すると死にます。 文字コード utf8 改行コード LF にしておきましょう。 それか、AWS側でvimで開いた画面でこぴぺっ!

AWSのデフォルトシェルをbashからzshに変更する

現在のシェル環境はyumでインストールされただけでは、変わらずbashです。
echo $SHELL
bashですね。
/bin/bash
zshをデフォルトシェルにするには、chshをします。 ただし、su が必要かつ ec2-userへの適用なのでこうします。
sudo chsh ec2-user
プロンプトで、zshのフルパスを指定します。
/bin/zsh
デフォルトシェルを確認すると
echo $SHELL
zshになりました。
/bin/zsh

一度sshを抜けて再度ログインで適用

.zshrcは一度ログインを抜ければ適用されるのが楽かな? さぁ、ログインしなおしたら貴方も楽しいzsh生活が送れます!!!

総括