こんにちは。ナミレリです。AWSのEC2インスタンスを管理、運用している場合、複数のターミナルで複数のEC2インスタンスにログインしているという方もいると思います。
ApacheのconfigをEC2の複数インスタンスで同じ設定にしたり、そういった時に間違わないようにプロンプトにホスト名などを表示してわかりやすくしたいと思います。

この記事はこんな人にオススメ
- EC2インスタンスを立ち上げたけどまだまだ初心者の方
- 複数のEC2インスタンスを管理されている方
- 複数のEC2インスタンスにそれぞれのユーザーでログインし運用されている方
- プロンプトのホスト名変更したい方
ちなみに下記はデフォルトのEC2インスタンス(Amazon Linux)のデフォルトのプロンプトは下のような感じでユーザ名(ec2-user)の後に長いホスト名が表示されます。
cat /etc/hostname
ip-xx-xx-x-x.ap-northeast-1.compute.internal
hostnamectl
Static hostname: ip-xx-xx-x-x.ap-northeast-1.compute.internal
(略)
この記事でわかること
- EC2インスタンス(Amazon Linux)でのホスト名の変更方法
- zsh(.zshrc)の設定方法
- PROMPTとRPROMPTの設定書式

下のスクリーンショットはこの記事で実現するプロンプトです。プロンプトの右がポイントでユーザ名とホスト名(aws_ec2としています)を表示しています。プロンプトの左はユーザ名とカレントディレクトリを表示しました。

目次
EC2(Amazon Linux)のホスト名を変更する
hostnamectlコマンドの使い方
EC2(Amazon Linux)のホスト名の変更方法はいくつかありますが、今回はhostnamectlコマンドを使って変更します。hostnamectlコマンドの使い方を下記に記載します。
sudo hostnamectl set-hostname [ホスト名]
上記のようにhostnamectlの後にset-hostnameでその後に設定したいホスト名を入力します。
変更の確認は下のようにhostnamectlで情報を表示します。
hostnamectl
ホスト名の事前確認
現在の設定の確認として、/etc/hostnameの内容とhostnamectlコマンドの結果を確認しましょう。どちらも現在のホスト名である「ip-xx-xx-x-x.ap-northeast-1.compute.internal」が表示されます。
cat /etc/hostname
ip-xx-xx-x-x.ap-northeast-1.compute.internal
hostnamectl
Static hostname: ip-xx-xx-x-x.ap-northeast-1.compute.internal
(略)
実際にホスト名を変更する
では実際にホスト名を変更します。今回は「aws_ec2」というホスト名にします。
sudo hostnamectl set-hostname aws_ec2
ホスト名の設定後の確認
設定後の確認として、/etc/hostnameの内容とhostnamectlコマンドの結果を確認しましょう。先程設定した「aws_ec2」になっています。
cat /etc/hostname
aws_ec2
hostnamectl
Static hostname: aws_ec2
(略)
この後はzshをインストールして細かく設定していきます。
zshのインストールと設定
zshをインストールされていない場合は下記のコマンドでインストールします。
sudo yum update
sudo yum install zsh
chshが使えるようにyumでutil-linux-userをインストールします。
sudo yum install util-linux-user
自分のアカウントのログインシェルをzshにします。chshコマンドでログインシェルを変更します。
sudo chsh [アカウント名]
[アカウント名] のシェルを変更します。
新しいシェル [/bin/bash]: /usr/bin/zsh
シェルを変更しました。
一旦ログアウトして再ログインします。再度ログインすると以下のようなメッセージが表示されます。0を入力すると空の.zshrcが作成されます。
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 --- 0
qを入力:何もせずに終了。次回再度メッセージが表示される。
0を入力:空の.zshrcを作成する。
1を入力:対話形式で.zshrcを設定する。
今回は0を入力し、.zshrcをカスタマイズしていきます。
オススメ書籍:Linux+コマンド入門 ——シェルとコマンドライン、基本の力
プロンプトの設定
~/.zshrcでプロンプトを設定します。zshの細かい設定は奥が深いのでこの記事では触れませんが、今回の目的であるプロンプトにホスト名などを表示してわかりやすくしていきます。
すでにプロンプトは先程設定したホスト名が適用されて、[ユーザー名@aws_ec2]になっています。
現在のシェルとzshのバージョン確認
echo $SHELLとzsh --versionでzshになっていることを確認するとともに、zshのバージョンも確認しておきます。
echo $SHELL
/usr/bin/zsh
zsh --version
zsh 5.8.1 (x86_64-koji-linux-gnu)
.zshrcの設定
viで~/.zshrcを編集し、下記の2行を追加してみましょう。編集後、source ~/.zshrcで再読込します。
vi ~/.zshrc
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
source ~/.zshrc
下記のようなプロンプトになります。それでは設定内容を細かく見ていきます。

設定の詳細
それでは先程設定した詳細を見ていきます。一見わかりにくい書式ですがこれがまた魅力のひとつですね。
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
左プロンプトと右プロンプト
PROMPTとRPROMPTの2行を定義しました。PROMPTは左プロンプト、RPROMPTは右プロンプトです。(下の青色マーカー部分)
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
色の指定
%Fと%fで囲んだ部分に色を指定することができます(下の赤色マーカー部分)。指定できる色は8色で、数字または色の名前で指定します。色の指定は{と}で囲みます。
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
色の名前 | 数字 |
---|---|
black | 0 |
red | 1 |
green | 2 |
yellow | 3 |
blue | 4 |
magenta | 5 |
cyan | 6 |
white | 7 |
%で始まる特殊な文字(Prompt Expansion)
%mはホスト名、%nはユーザ名など%で始まる便利な特殊な文字があります(下の黄色マーカー部分)。代表的なものを紹介していきます。
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
これまで紹介した色の指定やこれから紹介する%で始まる特殊な文字は、print -Pで確認することができます。どんな色になるのか、どんな情報が表示されるかを事前にprint -Pで確認できます。例えば下記のコマンドで確認できます。
print -P'%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
print -P '%l'
print -P '%M'
特殊な文字 | 説明 | 表示例 |
---|---|---|
%# | 一般ユーザーの場合は%を表示 スーパーユーザーの場合は#を表示 | % # |
%m | ホスト名(短い)を表示 | hostname.exsample.com |
%M | ホスト名(長い)を表示 | hostname |
%~ | 現在いるカレントディレクトリのPATHを表示 | ~/.ssh |
%/ %d | 現在いるカレントディレクトリのPATHを表示 | /home/user/.ssh |
%C | 現在いるカレントディレクトリの 最後のディレクトリを表示 | .ssh |
%B〜%b | 太文字にする | hostname |
%U〜%u | 下線に引く | hostname |
%S〜%s | 強調表示にする | hostname |
オススメ書籍:Linux+コマンド入門 ——シェルとコマンドライン、基本の力
最後に
最後まで読んでいただきありがとうございます。【AWS】プロンプトのホスト名を変更するはいかがでしたでしょうか。ApacheのconfigをEC2の複数インスタンスで同じ設定にしたり、そういった時に間違わないようにプロンプトにホスト名などを表示してわかりやすくできたと思います。
何より、プロンプトがかっこいいでモチベーションがありますね。
サーバー管理を学びたい方におすすめ!
講座買い切り型で、視聴期限なし。自分のペースで学べる。
現場で活躍されているプロが教えるコースを選べます。
1日1問、半年以内に習得 シェル・ワンライナー160本ノック