EC2 Ubuntu 24.04のシェルプロンプトのホスト名を変更する

Amazon EC2

Amazon EC2 で Ubuntu 24.04 を起動したとき、シェルプロンプトは ip-192-168-0-19 のように IP アドレスをハイフンでつないだ文字列が表示されます。

[ubuntu@ip-192-168-0-19 ~]$

これを、以下の my-server のように任意の文字列に変更する方法を紹介します。インスタンスのホスト名を変更せずにシェルプロンプトのみ変更します。

[ubuntu@my-server ~]$

作業するサーバを間違えていないかシェルプロンプトを見て確認することができるため、本番環境で作業をするときに安心します。

以前 Amazon Linux2 で同じことを書きましたが、それの Ubuntu 24.04 版です。

Amazon EC2
Amazon Linux2のシェルプロンプトのホスト名を変更する

Amazon Linux2 のシェルプロンプトは、初期状態では ip-192-168-63-91 のように IP アドレ ...

続きを見る

.bashrc の PS1 変数を変更する

ユーザごとのホームディレクトリにある .bashrc に PS1 変数があるので、その中の \h を任意の文字列に書き換えます。
\hはホスト名を意味します。

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

sed コマンドで書き換えるとこんな感じ。

NICKNAME="my-server"
sed -i 's/\\h/'"$NICKNAME"'/g' /home/ubuntu/.bashrc

UserData で置き換える

EC2 の初回セットアップのタイミングで変更したいので、UserData に以下のように書きます。
root と ubuntu ユーザの .bashrc を変更する例です。

#!/bin/bash

NICKNAME="my-server"
sed -i 's/\\h/'"$NICKNAME"'/g' /root/.bashrc
sed -i 's/\\h/'"$NICKNAME"'/g' /home/ubuntu/.bashrc

-技術ブログ
-