Skip to content

macOS でプロンプトをカスタマイズする

以前に Linux でプロンプトをカスタマイズする というメモを書きました。 今回は macOS 上の bash ででプロンプト表示をカスタマイズする設定例をメモしておきます。

検証環境

以下の環境で検証しました。

  • macOS Sonoma 14.2
  • 5.2.21(1)-release (aarch64-apple-darwin23.0.0)

デフォルトのプロンプト設定

プロンプトは環境変数 PS1 で定義されます。 デフォルトの $PS1 と実際の画面表示は以下になっていました。

1
2
$ echo $PS1
\h:\W \u\$

file

指定可能な色

指定可能な色は ANSI escape code の Colors セクション で言及されています。

色変更時後は \[\e[m\] で元に戻す

$PS1 で色変更を指定した場合、最後に \[\e[m\] で色を元に戻しておきます。 これを実施しない場合、色の変更が「プロンプト」だけでなく、「続くコマンド」にまで反映されてしまいます。

プロンプト設定例

以下はプロンプトの設定例です。 /etc/profile~/.bash_profile などに定義します。

現在ディレクトリのみ表示

1
2
3
4
5
if [ `id -u` = 0 ]; then
 PS1="\[\e[1;31m\]\W\\$ \[\e[m\]"
else
 PS1="\[\e[1;36m\]\W\\$ \[\e[m\]"
fi

file

ユーザ名+ホスト名表示

1
2
3
4
5
if [ `id -u` = 0 ]; then
 PS1="\[\e[1;31m\]\u@\h \W\\$ \[\e[m\]"
else
 PS1="\[\e[1;36m\]\u@\h \W\\$ \[\e[m\]"
fi

file

ユーザ名+FQDN 表示

1
2
3
4
5
if [ `id -u` = 0 ]; then
 PS1="\[\e[1;31m\]\u@\H \W\\$ \[\e[m\]"
else
 PS1="\[\e[1;36m\]\u@\H \W\\$ \[\e[m\]"
fi

file

参考

デフォルトの /etc/profile

/etc/profile
1
2
3
4
5
6
7
8
9
# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
 eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
 [ -r /etc/bashrc ] && . /etc/bashrc
fi