2021-05-12 14:32:11
Linux的locale, LC_ALL 和LANG
什麼是locale
locale 這個單詞中文翻譯成地區或者地域,其實這個單詞包含的意義要寬泛很多。locale 是根據計算機使用者所使用的語言,所在國家或者地區,以及當地的文化傳統所定義的一個軟體執行時的語言環境。
比如說:
在“簡體中文”環境,執行date 命令,顯示的是:
2016年01月07日 星期三 10:50:20 CST
而在英文環境下,執行date 命令,顯示的是
Wed Jan 7 10:51:31 HKT 2016
locale 把按照所涉及到的使用習慣的各個方面分成12 大類,這12 個大類分別是:
語言符號及其分類(LC_CTYPE)
數位(LC_NUMBERIC)
比較習慣(LC_COLLATE)
時間顯示格式(LC_TIME)
貨幣單位(LC_MONETARY)
資訊主要是提示資訊,錯誤資訊,狀態資訊,標題,標籤,按鈕和選單等(LC_MESSAGES)
行麼書寫方式(LC_NAME)
地址書寫方式(LC_ADDRESS)
電話號碼書寫方式(LC_TELEPHONE)
度量衡表達方式(LC_MEASUREMENT)
預設紙張尺寸大小(LC_PAPER)
對locale 自身包含資訊的概述(LC_IDENTIFICATION)
而這些資訊的設定通常放在/usr/share/i18n/locales 目錄下。讓我們開啟以下zh_CN 和 en_US 。 實際上我們平時使用 date 函數的時候,就是在這裡面進行格式選擇的。
如何設定locale
通過locale 命令,可以看到LC_* 各個變數的設定,如下:
$ locale
LANG=en_HK.UTF-8
LANGUAGE=en_HK:en
LC_CTYPE="en_HK.UTF-8"
LC_NUMERIC="en_HK.UTF-8"
LC_TIME="en_HK.UTF-8"
LC_COLLATE="en_HK.UTF-8"
LC_MONETARY="en_HK.UTF-8"
LC_MESSAGES="en_HK.UTF-8"
LC_PAPER="en_HK.UTF-8"
LC_NAME="en_HK.UTF-8"
LC_ADDRESS="en_HK.UTF-8"
LC_TELEPHONE="en_HK.UTF-8"
LC_MEASUREMENT="en_HK.UTF-8"
LC_IDENTIFICATION="en_HK.UTF-8"
LC_ALL=
設定LC_TIME 變數:
$ LC_TIME=en_US.utf8 # 變數設定
$ export LC_TIME # 生效設定
$ date # 效果檢視LC_ALL、LANG和LC_* 的關係
設定locale 就是設定12 大類的locale分類屬性,即12個LC_*。除了這個12個變數可以設定以外,為了簡便起見,還有兩個變數:LC_ALL 和LANG。他們之間有一個優先順序的關係:LC_ALL > LC_* > LANG 可以這麼說,LC_ALL 是最上級設定或者強制設定,而LANG 是預設設定值。
在設定了LC_ALL 之後,如果不 把LC_ALL 強制設定為空,那麼LC_* 將無法被設定。但是LANG 的值不受影響。
LC_ALL=C 的含義
LC_ALL=C 是為了去除所有在地化的設定,讓命令能正確執行。
locale 可以設定型別
$ locale -a
C
C.UTF-8
en_HK.utf8
POSIX
通過該命令檢視後,可以知道所有可以使用的locale 方式。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-12/137765.htm
相關文章