write ahead log

ロールフォワード用

WSLでRubyを使うとなんか警告が出て消したい

昔対処して忘れてたのでメモしておく.

Insecure worldほにゃららがやたら出る

WSLでVagrantを使ったりすると以下の様なメッセージが表示される.

warning: Insecure world writable dir /mnt/c in PATH, mode 040777

Rubyは親切なので権限が過剰じゃないかと気にしてくれているらしい.

WSLはUnixとは違うので権限がやたら与えられている.これはしょうがない.

対処方法

見つかった方法は2つ.

  • 環境変数PATHにWindowsのパスを含めない
  • Rubyのオプションで警告を無視する

環境変数PATHにWindowsのパスを含めない

Windowsコマンドを使うために追加されているパスを消してしまう.

export PATH="$(echo "$PATH" | sed -r -e 's;:/mnt/[^:]+;;g')"

これでWSLからWindowsコマンドは使えなくなるが, Rubyの警告は出る.

Rubyのオプションで警告を無視する

ubuntuの~/.profileの末尾に以下を追加.

export RUBYOPT=-W0

これでWSLのRubyでは常に警告が抑制される.

どちらで行くか

開発でWSL使う人は必然的にパスを削除する側になるでしょう.
(警告無視して開発するわけにもいきませんし)

開発はVM上でという方は警告抑制が割といい気がします.

ちょっとしたスクリプティングなら気にならないので.

参考

この記事は実質, このURLを探すのに苦労したのでメモってるだけ.

ククログ - Windows 10のWindows Subsystem for Linux(WSL)を日常的に活用する