Tihiroのストレスフリーな生活

少しだけ頭使って後は根性

ユーザーのホームディレクトリを変更するとプロンプトの表記が「-bash-4.2$」とかいう表記になった。

環境

CentOS 7.7

現象

例えば

useradd docker

してdockerユーザーを作成した後、ホームディレクトリを変更するために

usermod -d /var/docker docker

としました。その後、

su - docker

してみると、プロンプトの表記が

-bash-4.2$

となるのです。

ホームディレクトリを変更しなければ

docker@centos7-docker ~$

という表記です。

その他の例としてはPostgreSQL(サーバー機能)をインストールすると、自動的にpostgresユーザーが作成されるのですが、ホームディレクトリが/home/postgresではありませんので同様な感じになります。

原因

原因としては、ホームディレクトリに".bash_profile"と".bashrc"ファイルが存在しないため、ということになります。

仕組み

".bash_profile"と".bashrc"の仕組みは下記サイトを参照してください。

qiita.com

プロンプトの表記については下記サイトを参照してください。

qiita.com

dockerユーザーを例にして解説します。ホームディレクトリは"/home/docker"です。

  1. ログインすると"~/.bash_profile"つまり"/home/docker/.bash_profile"が実行される。
  2. "~/.bash_profile"で、"~/.bashrc"があれば"~/.bashrc"を実行される。
  3. "~/.bashrc"で、"/etc/bashrc"があれば実行される。
  4. "/etc/bashrc"で、なんやかんやしてPS1に「ユーザー名@ホスト名 ディレクトリ」という値がセットされる。

という流れのようです。

useradd docker

をした際に、"/home/docker/.bashrc"や"/home/docker/.bash_profile"が自動的に作られます。

が、

usermod -d /var/docker

とした際には、"/var/docker/.bashrc"や"/var/docker/.bash_profile"は自動的に作られません。

ということで、ホームディレクトリを変更するとプロンプトの表記が変わる、というお話でした。

対策

"/home/docker/.bashrc"や"/home/docker/.bash_profile"がないなら、作ればいいじゃない。ということですね。

cp /home/docker/.bash* ~/

で、コピーしてきてしまえば万事解決な感じですね。ひゃっほう。

まとめ

コマンドプロンプトの表記が変わると、expectなど使ってる場合にたまに問題になったりならなかったり。問合せが来てびっくりしたことも何度か。