このエントリーをはてなブックマークに追加

一時的にロケールなどの環境変数を変えてコマンドを実行したいときがあります。 環境変数を一時的に変更(明示的に指定)してプログラムを実行するenvコマンドというものがあります。

例えば、日付のフォーマットなどは、英語表記を期待していても、OSやユーザの設定によっては、期待と違うものが表示されることがあります。 インストール時に日本語でインストールされていたために、日本語で表示されるというような場合です。 そういうときのために"date +format"できちんと整形するというのもありますが、 いずれにせよ、環境変数によって実行結果が異なっては困る状況がありえますので、 そういった場合に明示的、かつ、一時的に環境変数を変更できると便利です。 (終わった後環境変数を戻さなくてよいという意味でもかなり便利です。)

以下は、日本語を選択してCentOSをインストールしてそのまま使っている場合のデフォルトの環境でdateコマンドを実行した結果です。

$ date
2013年 12月 11日 水曜日 08:49:16 JST

次に環境変数LANGを明示的に日本語に設定して表示しています。

$ env LANG=ja_JP.UTF-8 date
2013年 12月 11日 水曜日 08:49:31 JST

次に、環境変数LANGを明示的に英語に設定して表示しています。

$ env LANG=en_US.UTF-8 date
Wed Dec 11 08:49:39 JST 2013

このように、一時的にロケールを変更してdateコマンドが実行できています。

別の例として、マニュアルなどのロケールも環境変数の影響をうけます。 以下のように、言語を使い分けて表示したいときに便利です。

$ env LANG=ja_JP.UTF-8 man man | head -n 15
man(1)                                                                  man(1)



名前
       man - オンラインマニュアルページを整形し表示する。
       manpath - ユーザー個々のマニュアルページの検索パスを決める。

書式
       man  [-adfhktwW] [-m system] [-p string] [-C config_file] [-M path] [-P
       pager] [-S section_list] [section] name ...

説明
       man はオンライン・マニュアル・ページを整形し表示する。このバージョン の
       man コマンドでは環境変数 MANPATH と (MAN)PAGER を設定できる。これにより

英語で表示するならこのようになります。

$ env LANG=en_US.UTF-8 man man | head -n 15
man(1)                                                                  man(1)



NAME
       man - format and display the on-line manual pages

SYNOPSIS
       man  [-acdfFhkKtwW]  [--path]  [-m system] [-p string] [-C config_file]
       [-M pathlist] [-P pager] [-B browser] [-H htmlpager] [-S  section_list]
       [section] name ...


DESCRIPTION
       man formats and displays the on-line manual pages.  If you specify sec-



記事一覧へ