Linux SSH 到其它機器的時候,若自己的環境有設定 locales 是 zh_TW.UTF-8,但是連到的環境是沒有設定此語系的(通常是 en_US.UTF-8),就會出現下述的警告訊息:
- -bash: warning: setlocale: LC_ALL: cannot change locale (zh_TW.UTF-8)
要如何避免此問題呢?
Linux SSH 想避免 setlocale: LC_ALL: cannot change locale 的訊息
想要避免 setlocale: LC_ALL: cannot change locale 等警告訊息,有下述兩種方式:
- 自己 Client 端不要送 LANG、LC_* 的資訊
- 遠端 Server 端增加語系
- 註:挑其一即可
自己 Client 端不要送 LANG、LC_* 的資訊
- sudo vim /etc/ssh/ssh_config # 將下述註解掉:
- SendEnv LANG LC_* # 前面加上「#」,改成下述:
- # SendEnv LANG LC_*
再來就不會送 LANG、LC_* 的參數出去,就不會有此警告訊息。
另外一種是由 ~/.ssh/config 蓋掉 SendEnv 參數的作法,但是我測試無法成功
- vim ~/.ssh/config # 增加下述: Host * SendEnv -LC_* -LANG*
- 說明可見:ssh_config(5) - Linux manual page
- Search 「SendEnv」的區塊
- It is possible to clear previously set SendEnv variable names by prefixing patterns with -. The default is not to send any environment variables.
遠端 Server 端增加語系
一種是遠端 Server 端的,將遠端連線過去的 Server 增加 zh_TW.UTF-8 的語系,步驟如下:
Debian Linux 作法
- sudo vim /etc/locale.gen
- # zh_TW.UTF-8 UTF-8 前面 # 拿掉,改成:
- zh_TW.UTF-8 UTF-8
- sudo locale-gen
Ubuntu Linux 作法
- sudo locale-gen zh_TW.UTF-8
- sudo update-locale
在玩 vagrant + docker 時,
發現 ubuntu 18.04 發現需要先 apt-get install locales 才可以執行 sudo locale-gen zh_TW.UTF-8
docker 的系統大多數都是最精簡化,所以套件都需要自行安裝~ 🙂