----- 最近更新2022-02-03-----
本文目錄結構預覽:
在 Unix 初期,每個人都使用 ASCII 碼,因此也沒有什麽問題。但是,ASCII 碼基於英語,而隨著 Unix、Linux 以及 Internet 在世界範圍的擴展,有必要設計壹種新系統,從而能夠處理許多語言以及大量不同的文化習俗。
多年後,開發人員開發出了壹種新系統,該系統基於 “區域設置(locale)” 的思想,這屬於 POSIX 1003.2 標準。
區域設置是特定於語言和地域的規則和數據的集合,也可以看成是壹組環境變量。區域設置包括有關排序規則、日期和時間格式設置、數字和貨幣約定,以及字符分類的信息。例如,如果 Linux 用戶選擇了美國英語區域設置,那麽在 Linux 中,日期消息將以格式“月-日-年”顯示,而貨幣符號將會使用“$”表示,等。
locale 命令是 Linux 系統中多語言環境的設置接口,用來設置或查看程序運行的不同語言環境。
除 C 和 POSIX 這兩個 locale 名稱外,locale 的命名規則為: language[_territory[.codeset]][@modifier] ,
即: 語言[_地區[.字符集編碼]][@修飾] 。如: en_US.UTF-8
1、語法
locale - 查看區域設置信息。(get locale-specific information)
語法:
常用選項:
註: -c 與 -k 選項後面須帶上某個環境變量參數或具體的鍵名才有意義。如, locale -k LC_CTYPE 。
2、常用案例
使用命令 locale 查看系統中所有區域設置的當前值。
使用命令 locale -a 查看系統支持哪些區域設置。
3、查看區域設置特定變量的值
1)如果 locale 命令後面加上 category 參數,將顯示該 category 的所有值。如 locale LC_CTYPE
2)如果 locale 命令後面加上 keyword 參數,將顯示該 keyword 對應的值。如 locale charmap
當查看某個具體參數的值時,為了讓輸出結果更有可讀性,壹般會加上 -kc 選項。
例:
例:查看有關存儲時間和日期的格式。
1、update-locale
update-locale - 修改全局區域設置。(Modify global locale settings)
語法: update-locale [OPTIONS] [var=locale | var] [...]
例:將 LANG 設置為 C.UTF-8
設置完需要重啟 shell 才能生效。
2、修改初始化配置文件
也可以通過修改初始化文件來修改區域設置,如修改用戶的 .bashrc 文件或 .profile 文件。
如,在初始化文件中添加如下壹行:
只是臨時修改的話只在命令行執行該命令就行。
3、全局區域設置文件
如果是 Debian 類系統,可以在 /etc/default 中找到全局區域設置文件: /etc/default/locale 。
update-locale 命令修改的就是這個文件的內容。
如果是 Red Hat 類系統,則該文件位於: /etc/locale.conf 。
說明:
優先級: LANG < LC_* < LC_ALL ,優先級比 LANG 高,LC_ALL 優先級最高。
LC_ALL 優先級最高,若設置了此變量,所有 LC_* 和 LANG 都會強制跟隨它的值,所以壹般不用。 LC_ALL 實際相當於壹次設置全部的 LC_* 。
壹般我們使用 LANG 來設置全部的 LC_*,而獨立設置壹個 LC_* 為想要的設置。比如,我設置 LANG=en_US.UTF-8 ,設置 LC_TIME=zh_GN.UTF-8 ,目的是為了輸出中文形式的時間。如下:
區域設置可以分為很多個類別(category),也就是多個環境變量。下表將列出壹些常用的類別:
使用命 locale 可心展開查看每個 category 的具體鍵值對:
或者查看某個具體的值:
C 區域設置使用 ASCII 排序序列,在這種排序序列中,大寫字母位於小寫字母之前:ABC...XYZabc...z。該模式稱為 C 排序序列 。
en_US 區域設置使用壹種不同的排序序列,在排序序列中,小寫字母和大寫字母成對分組:aAbBcC...zZ。這種模式比較自然,因為它以字典順序組織單詞和字符。所以這壹模式稱為 字典排序序列 。
排列順序比較:
例:C 排序序列
例:字典排序序列