rootでログインするとtmuxで日本語が化ける謎

違いが分からなくて悩んでいました.

[tullio@stepserver]$ ssh root@myserver
[root@myserver] $ su tullio
[tullio@myserver] $ tmux at
[tullio@myserver] $ less file.txt
___________

rootでログインしてから自分アカウントになってtmuxをアタッチしてUTF-8のファイルの中身を見ると,日本語がアンダースコアになって読めない.


最初から自分アカウントでログインすると,問題ない.

[tullio@stepserver]$ ssh tullio@myserver
[tullio@myserver] $ tmux at
[tullio@myserver] $ less file.txt
日本語

lessする時の環境は,tmuxでセッションを再現しているので化けるときも化けない時も同じです.


...と思い込んでいたのですが,tmuxをアタッチする直前の環境変数が,rootと自分アカウントでは違いました.

[root@myserver] $ su tullio
[tullio@myserver] $ echo $LANG
en_US
[tullio@myserver] $ echo $LANG
en_US.UTF-8

結論として,tmuxを立ち上げる前に環境変数をセットしておくとOK.

[root@myserver] $ su tullio
[tullio@myserver] $ echo $LANG
en_US
[tullio@myserver] $ export LANG=en_US.UTF-8
[tullio@myserver] $ tmux at
[tullio@myserver] $ less file.txt
___________

ん?

もう一つ悪さをしている環境変数がありました.

[detached]
[tullio@myserver] $ echo $LC_ALL
en_US
[tullio@myserver] $ unset LC_ALL
[tullio@myserver] $ tmux at
[tullio@myserver] $ less file.txt
日本語