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

以上です。

コメント

このブログの人気の投稿

gnuplot: グラフの色を変更する

[Linux] rsyncで進捗を確認する

gnuplotで縦線を引きたい