この記事の概要
ターミナルを使う際に、デフォルトではログインユーザ名、マシン名が表示されてしまうため、キャプチャ取得したりする際にホスト名などを晒さないように、それを固定値に変更します。
bash、zsh、zshenv、zshrc、、、といろいろ混ざり合った結果、少々つまづいたため備忘録として残します。
現在のシェルを確認
$ echo $SHELL
/bin/zsh
Macを使っていて何も変更しないとzshになっているはずです。
合わせて、ターミナルの「開くシェル」も確認します。
「デフォルトのログインシェル」=zshです。
なので、zshで統一されていることを前提として以下記載します。
zshのプロンプト表示を変更する
プロンプトの表示は環境変数PS1を変更することで変えることができます。
デフォルトは以下の通り。
PS1="%n@%m %1~ %# "
これは/etc/zshrc
に定義されています。
定義 | 意味 |
---|---|
%n | ユーザ名($USERNAMEの値) |
%m | フルマシン名 |
%1~ | 現在の作業ディレクトリが $HOMEで始まる場合は~に置換される。 数字の1は表示する階層を意味する。1は現在のディレクトリ名が表示される。2にした場合は現在とその上のディレクトリ名が表示される。 |
%# | root以外は%、rootは#もつく。(厳密ではないがおおかたこの解釈でOK) |
※参照
https://zsh.sourceforge.io/Doc/Release/Prompt-Expansion.html#Prompt-Expansion
変更するために~/.zshrc
に以下を記載します。
export PS1="k-nabe-o@localhost %# "
固定文字列と、rootかそれ以外かを表示しているのみです。
個人的に、pwdで現在のディレクトリを確認する癖がついてるため、ディレクトリ名の表示も不要かなと。
記載したらログインし直すか、読み込みなおせばOK。
再読み込みさせる場合はドットで読み込ませます。
$ . ~/.zshrc
つまずきポイント1(定義するファイルに注意)
ポイントは、.zshenv
ではなく、.zshrc
に記載することです。
PATHの追加などよく.zshenv
に記載しますが、どのように記載してもうまく適用されませんでした。
おそらく以下の順に読み込まれているのではないかと予想してます(未確認)。
~/.zshenv
↓
/etc/zshrc
↓
~/.zshrc
つまずきポイント2(シェルが統一されていない)
bashに変えてると動きがよくわかりませんでした。
この状態にしてターミナルを起動して、現在のシェルを確認すると、ターミナル自体はbashで動いているが、内部ではzshが動いているという状態。これが意味わからん。
PS1の定義の仕方は、zshとbashでは異なります。
zshは%
で指定しますが、bashは¥(バックスラッシュ)
です。
bashのデフォルトは下記の定義です。
PS1='\h:\W \u\$ '
これを見かけた場合はbashの定義のため、zshではうまく機能しません。
プロンプトの変更がうまく行かない人は、動いているシェルとその定義の仕方が合っているかを再確認すると解決につながるかもしれません。