質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.62%

WSLでのbashの色分け

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 921

Yhaya

score 288

 環境

  • Windows10
  • WSL

 わからないこと

bashのパス表示やlsコマンドを使った時のフォルダの色分けを変えたい。

 現状

bashのパス表示が薄灰色で見づらい。また、lsコマンドでフォルダの中身を見たときに黄色のマーカーがついてしまって見づらい。

解決のために、ホームディレクトリに.dircolorsというフォルダを作ってeval ` dircolors ~/.dircolors` というコマンドを打ちましたが、エラーも出ず、表示にも何も変化なしといった感じです。.dircolorsは下のような内容です。

COLOR tty                                                                                                                                                               
# Extra command line options for ls go here.
# Basically these ones are:
#-F = show '/' for dirs, '*' for executables, etc.
#-T 0 = don't trust tab spacing when formatting ls output.
OPTIONS -F -T 0

# Below, there should be one TERM entry for each termtype that is colorizable
TERM linux
TERM console
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM cons25
TERM xterm
TERM rxvt
TERM xterm-color
TERM color-xterm
TERM vt100
TERM dtterm
TERM color_xterm

# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
EIGHTBIT 1

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
#DIR 04;34 # directory
OTHER_WRITABLE 00;33
LINK 01;36# symbolic link
FIFO 40;33# pipe
SOCK 01;35# socket
BLK 40;33;01# block device driver
CHR 40;33;01# character device driver
ORPHAN 01;05;37;41# orphaned syminks
MISSING 01;05;37;41 # ... and the files they point to

# This is for files with execute permission:
EXEC 01;32

# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')
.cmd 01;32 # executables (bright green)
.exe 01;32
.com 01;32
.btm 01;32
.bat 01;32
.sh 01;32
.csh 01;32
.tar 01;31 # archives or compressed (bright red)
.tgz 01;31
.arj 01;31
.taz 01;31
.lzh 01;31
.zip 01;31
.z 01;31
.Z 01;31
.gz 01;31
.bz2 01;31
.bz 01;31
.tz 01;31
.rpm 01;31
.cpio 01;31
.jpg 01;35 # image formats
.gif 01;35
.bmp 01;35
.xbm 01;35                                                                                                                                                              .xpm 01;35
.png 01;35
.tif 01;35 

どこが間違っているかわかる方がいたらお教え願います。

追記:
bash上で

dircolors ~/.dircolors


と入力すると、次のようなものが出てきました。

LS_COLORS=''
export LS_COLORS
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

解決のために、ホームディレクトリに.dircolorsというフォルダを作って

とありますが、つまり、ホームディレクトリの直下に.dircolorsというディレクトリを作って、その下にファイルの.dircolorsを置いたということですか?だとすると、dircolorsコマンドに渡すパスは
~/.dircolors/.dircolorsになります。つまり、

dircolors ~/.dircolors/.dircolors


とします。


質問者さんが提示した.dircolorsファイルをこちらの環境で色々と試してみたところ、TERMの宣言部分に問題があることがわかりました。
まずは以下のページを見てみてください。dircolorsについての解説がまとめられています。
dircolors - lsコマンドの色表示を設定する

TERM宣言部は指定した色設定を適用させる仮想端末の種類(xtermなど)を指定します。これは複数指定することができ、その場合は何行かに渡って宣言します。
さて、ここで重要なのが、

TERMは、環境変数TERMが指定されたものの場合に色設定が取得できるようになります。

の但し書き。これ、言い換えると、TERMで宣言した仮想端末の種類と環境変数TERMで指定された仮想端末の種類が一致すれば設定を反映するということになります。つまり、一致するものがなければ、設定が反映されないんですね。ものは試しに、環境変数TERMの中身を確認してみてください。そして、それが作成した.dircolorsのTERMのリストの中にあるかを確認してみてください。おそらく、入っていないのではないかと思います。
で、解決方法ですが、

  1. 環境変数TERMに指定されている仮想端末の種類を.dircolorsに追加する
  2. TERM宣言部をすべて削除する

になります。
1.は先述の通りの仕組みで動いているためですので、該当する仮想端末種類を.dircolorsに追記することで解決になります。
2.ですが、TERM宣言部が「設定を適用させたい仮想端末の種類を指定する」というものですので、端末種類を特定する必要がなければ、TERM宣言部を書かなければ、そのまま適用されます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/08 22:02

    それじゃ、evalコマンドに渡さずに、単に
     dircolors ~/.dircolors
    とdircolorsコマンドを実行したらどうなりますか?
    (何か表示されたら質問欄に追記してください)

    キャンセル

  • 2018/08/09 00:29

    環境変数LS_COLORSに設定値が入っていませんね。
    質問者さんが提示した.dircolorsで色々試してみたら、TERMの宣言部分に問題があったのがわかったので、解答欄に追記しておきますね。

    キャンセル

  • 2018/08/11 21:22

    ありがとうございます。解決しました。ちなみに私の環境ではTERMは"xterm-256color"で、ご指摘の通り.dircolorsに入っていませんでした。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る