LoginSignup
3
3

More than 5 years have passed since last update.

Linuxサーバのbashプロンプトがおかしくなった

Posted at

稼働中のLinuxサーバにある日突然sshログインできなくなり、急遽強制再起動。
再起動後は正常にログインできたが、何故かbashプロンプトがおかしくなってしまった…。

普段は以下の様な感じ。

Mintos-MacBook:~ minto$ ssh nantoka-server
Last login: Wed Jun 29 11:42:20 2016 from xxx.xxx.xxx.xxx
[minto@nantoka-server ~]$

それがこうなった。(最後の行に注目)

Mintos-MacBook:~ minto$ ssh nantoka-server
Last login: Wed Jun 29 11:42:20 2016 from xxx.xxx.xxx.xxx
 ~]$ o@nantoka-server

実際は『o』の位置にカーソルが来ている。カーソルに被さる感じで『ログインユーザ名@ホスト名』の先頭4文字が抜けた状態のものが常に表示される。エンターキー押しても状況は変わらず。気持ち悪いし読みづらい…。

コマンドを入力しようとした際もガンガン崩れるし、rootを含め他のユーザに切り替えても状態は変わらず。なんなんだこれ…。

【前提】 bashプロンプトの表記は環境変数に定義されている

bashでは環境変数『PS1』によってプロンプトを定義している。

参考) bashのプロンプトを変更するには - @IT

PS1を置き換えることによって、特殊文字を用いながらプロンプトをカスタマイズできる。
例えば以下の設定を行うと、シンプルに『$ 』だけのプロンプトに変更される。

$ export PS1="$ "

標準的なプロンプトでは、『ユーザ名』『ホスト名』『カレントディレクトリ』が表示されるくらいだが、『現在日時』『シェル名』『シェルバージョン』『コマンドの履歴番号』などを表示できるほか、色やbold・下線・点滅などの文字装飾もできる。

参考) Bash カラープロンプト - ArchWiki

このようなコマンドを ~/.bashrc などに記述することで、ログインする度にカスタマイズしたプロンプトを適用できる。

原因はホスト名の設定値不具合

確認してみたところ、PS1は以下の様な感じ。従来の設定から書き換わっているわけではなかった。

 ~]$ echo $PS1
[\u@\h \W]\$

PS1をいじってみたところ、『\h』(ホスト名)を含めた時だけプロンプトが崩れることが判明。どうやらホスト名が異常な状態らしい。

ただ、現状のホスト名を確認したところ、特におかしなところは無い。これはどういうことなんだろう…。

 ~]$ hostname
nantoka-server
 ~]$ cat /etc/sysconfig/network | grep HOSTNAME
HOSTNAME=nantoka-server

とりあえず値は変わらないはずだけど、ホスト名を再設定してみた。

 ~]$ sudo hostname nantoka-server

再ログイン。

Mintos-MacBook:~ minto$ ssh nantoka-server
Last login: Wed Jun 29 11:43:40 2016 from xxx.xxx.xxx.xxx
[minto@nantoka-server ~]$

直ってる…。なんでこれで直るんだ…。仕組みが分からないんだけど、中間ファイル(中間設定値??)的な部分が壊れてたのか?

どうすることも出来なかったら、とりあえずPS1には『\h』(ホスト名)を除いた設定値にして過ごそうと思っていたんだけど、直ってしまったのでこれで解決。なんだったんだろ。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3