bash: Ubuntu20.04 でSSH接続時にターミナルの色が表示されなくなった
症状
今までは ssh
でマシンに接続した際にカラー表示がされていたのに、ある時からカラー表示がされなくなってしまった。
しかし、 source ~/.bashrc
と実行することでカラーを有効化できる。そんな状態。
解決方法
私の場合は、 ~/.bash_profile
というファイルを作成してしまったことが原因のようだった。
そのため、 ~/.bash_profile
に記述されている内容をすべて ~/.profile
に移し、 ~/.bash_profile
は削除した。これにより解決した。
cat ~/.bash_profile >> ~/.profile
rm ~/.bash_profile
原因
pyenv
を入れた際に、インストールガイドに沿って ~/.bash_profile
と ~/.bashrc
の両方にコマンドを書いたのだが、それが良くなかった。
Ubuntuではもともと ~/.bash_profile
というファイルは利用しておらず、代わりに ~/.profile
というファイルが利用されているようだ。しかし、自分で ~/.bash_profile
というファイルを作成してしまうと、Ubuntuが ~/.profile
を読みださずに代わりに ~/.bash_profile
を読みだす動作になってしまうようだ。
一応、 ~/.profile
の中に注意書きがある。
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
そして、このファイルが読みだされなくなることで何が起きるかというと、以下の部分が実行されなくなる。
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
これは実行環境が bash
であり、 ~/.bashrc
が存在していればそれを読み出す、というもの。これが実行されなくなってしまったので、 ~/.bashrc
が読みだされなくなり、該当ファイル内の以下のコマンドが実行されない状態になってしまっていた。
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
以上です。
コメント
コメントを投稿