rootにsuするとファイル名や設定ファイル内の日本語が文字化けする
2023/11/04
ロケールの問題だと思ったので関連を調べた.
“env”コマンドでログインしているアカウントの環境設定がわかる.
出力結果の“LANG=C”,これが問題の原因である.
一般ユーザはちゃんと日本語の“ja_JP.UTF-8”になっているのに,
“su -”でrootへログインした際はこの設定になってしまう.
root@bigowl2nd:~# env SHELL=/bin/bash PWD=/var/○○○ LOGNAME=root HOME=/root LANG=C TERM=xterm USER=root SHLVL=1 XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MAIL=/var/mail/root _=/usr/bin/env OLDPWD=/var/○○△ root@bigowl2nd:~#つまりroot用の設定ファイルが怪しいので,rootのホーム“/root”を探す.
“ls -lah”でそれっぽいファイルを探すと“.profile”があることに気づく(普段カスタマイズは基本しないのでノーマークだった).
root@bigowl2nd:~# cat .profile # ~/.profile: executed by Bourne-compatible login shells. if [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fi fi mesg n 2> /dev/null || true # Installed by Debian Installer:" # no localization for root because ja_JP.UTF-8" # cannot be properly displayed at the Linux console" LANG=C LANGUAGE=C理由もしっかり書いてある*2.この記述内容を書き換えれば解決である.
バックアップしてから“.profile”を下のように編集し,ログインし直す.
root@bigowl2nd:~# cp .profile .profile_org root@bigowl2nd:~# vim .profile root@bigowl2nd:~# diff -u .profile_org .profile --- .profile_org 2023-11-03 22:53:38.094015640 +0900 +++ .profile 2023-11-03 22:54:45.714040588 +0900 @@ -10,5 +10,6 @@ # Installed by Debian Installer:" # no localization for root because ja_JP.UTF-8" # cannot be properly displayed at the Linux console" -LANG=C +# LANG=C +LANG=ja_JP.UTF-8 LANGUAGE=C root@bigowl2nd:~# exit再ログイン後にもう一度“env”コマンドを実行すると直ってると思う.
root@bigowl2nd:~# env SHELL=/bin/bash PWD=/root LOGNAME=root HOME=/root LANG=ja_JP.UTF-8 TERM=xterm USER=root SHLVL=1 XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MAIL=/var/mail/root OLDPWD=/var/samba _=/usr/bin/env root@bigowl2nd:~#