Linux SSH 想避免 setlocale: LC_ALL: cannot change locale 的訊息

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 等警告訊息,有下述兩種方式:

  1. 自己 Client 端不要送 LANG、LC_* 的資訊
  2. 遠端 Server 端增加語系
    • 註:挑其一即可

自己 Client 端不要送 LANG、LC_* 的資訊

  1. sudo vim /etc/ssh/ssh_config # 將下述註解掉:
  2. SendEnv LANG LC_* # 前面加上「#」,改成下述:
    • # SendEnv LANG LC_*

再來就不會送 LANG、LC_* 的參數出去,就不會有此警告訊息。

另外一種是由 ~/.ssh/config 蓋掉 SendEnv 參數的作法,但是我測試無法成功

  1. vim ~/.ssh/config # 增加下述: Host * SendEnv -LC_* -LANG*
  2. 說明可見: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 作法

  1. sudo vim /etc/locale.gen
  2. # zh_TW.UTF-8 UTF-8 前面 # 拿掉,改成:
    • zh_TW.UTF-8 UTF-8
  3. sudo locale-gen

Ubuntu Linux 作法

  1. sudo locale-gen zh_TW.UTF-8
  2. sudo update-locale

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Linux SSH 想避免 setlocale: LC_ALL: cannot change locale 的訊息〉中有 2 則留言

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料