環境変数って何?

UNIX/Linux の環境変数って何ですか?

UNIX/Linux の環境変数の種類

環境変数とは、アプリケーションの挙動に関する設定を保存するための仕組みです。

$ echo $OSTYPE

とコマンドを実行すると、現在使用中のOS(オペレーティングシステム)の値を表示します。

僕の場合は

linux-gnu

と表示されました。

環境変数は
システムにより定義されるもの
ユーザが任意に定義するもの
があります。

環境変数に関連するコマンド

printenv コマンド
 環境変数の一覧を表示

export コマンド
 -n 指定した環境変数を削除します。
 -p エクスポートされている環境変数のリストを表示します。

env コマンド
 -0 表示する行の終端を改行ではなく値が 0 のバイトにします。
 -i 環境変数が無い状態でプログラムを実行します。
 -u 変数名 指定した変数名が環境変数の一覧にある場合は、それを削除します。
 オプションなしでコマンドを実行すると定義されている環境変数が表示されます。

よく使う環境変数

環境変数 PATH

PATH で設定されているディレクトリ内の実行ファイルは、 /usr/bin/ls などと絶対パスで指定しなくても、自動で実行してくれます

PATH が設定されていなければ ls というコマンドを実行する場合、 /usr/bin/ls と入力する必要がありますが、 PATH が設定されているので ls だけでコマンドが実行されます。

環境変数 PATH の内容は

$ echo $PATH

で確認できます。

僕の場合は

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

でした。

一時的に、PATH を追加する時は次のようにします。

$ export PATH=$PATH:/hoge/hogehoge/

完全に設定する場合は ホームディレクトリにある .bashrc に以下の行を追加します

export PATH=$PATH:/hoge/hogehoge01:/hoge/hoge2:......

$ source ~/.bashrc
で追加した PATH を反映させます。

環境変数 LANG

環境変数 LANG は、ロケールと呼ばれる言語、通貨単位、日付の書式などが設定されます

$ echo $LANG
  ↓
ja_JP.UTF-8   <--- 僕の場合 と表示されました。

 

この ja_JP の部分がロケールです。ja が言語名、 JP が国名です。 UTF-8 が文字のエンコード方式になります。

シェル

あなたが使っている シェルを調べるときには

$ echo $SHELL

で、使っているシェルがわかります。
Ubuntu では、一般的に bash というシェルが使われています。

シェル( shell )と は、以前にも説明しましたが、ユーザーとOSのやり取りを行うプログラム(インターフェイスの役割を担っていてコマンドを受け付けたり、結果を出力する)の事で、沢山の種類のシェルがあります。

shell の種類

  • sh( Bシェル ) 初期のUNIXの標準シェル
  • csh( Cシェル ) BSD系のUNIXの標準シェル
  • tcsh( TCシェル ) Cシェルの上位互換のあるシェル
  • ksh( Kシェル ) SVR系のUNIXの標準シェル
  • Bash GNUプロジェクトのシェル

など多くのシェルがあります。

 
シェルってなんだっけ? と思った方は
 → UNIX/Linuxのシェルとカーネルとは?
 → 標準入力 標準出力とリダイレクト、パイプのはなし
の記事を読んでください。

Linuxの常識 ディレクトリについて

あなたがふだん使っているコマンドはどこに保存されているかわかりますか?

コマンドが保存されているディレクトリ

/bin 汎用(基本)コマンド
/sbin 管理者用コマンド
/usr/bin アプリケーションで利用する汎用(基本)コマンド
/usr/sbin アプリケーションで利用する管理者用コマンド
/usr/local/bin 追加したソフトやパッケージ用のコマンド

一般的には上記のディレクトリに実行ファイルが保存されていますので、覚えてください

環境変数 PATH が設定されていなければ /bin/ls と入力しないと、 ls コマンドは実行されません。
普段よく使うコマンドのディレクトリは、長い path を入力しないでもいいように環境変数 PATH に設定するようにします。