シェル変数と環境変数
TECHRU テックる!は、「実機で学ぼう!」をコンセプトにしたインフラエンジニア専門スクールです。
- ホームページ: https://www.techru.jp
- LMS:https://moodle.techru.jp/moodle
現役エンジニアがLPIC, LinuC/AWS認定試験に必要な専門的な知識を分かりやすく教えております。また、実際にサーバーを構築するなど手を動かしながら学ぶことで、実践的な知識が身につきます。
シェル変数と環境変数について見ていきましょう。
シェル変数
シェル変数のスコープは特定のシェルのみです。子プロセスには継承されません。当該のシェル・プロセスを終了すると、シェル変数は失われます。これらの変数は、ユーザーがシェルスクリプト内で値を一時的に保存するためによく使用されます。
シェル変数は次のようにして宣言します。
変数名=値
環境変数
一方、環境変数はシステム全体の設定を保持するために使われます。例えばPATH環境変数はシステムが実行可能ファイルを見つけるために検索するディレクトリのリストを保持しています。
シェル変数を環境変数にエクスポートすることも可能です。エクスポートすることで、子プロセスがその変数を利用することができます。エクスポートするには、export
コマンドを使用します。
export 変数名=値
よく利用される環境変数には、以下のようなものがあります。
環境変数 | 説明 |
---|---|
EDITOR | デフォルトのエディタのパス |
HISTFILE | コマンド履歴を格納するファイル |
HISTFILESIZE | HISTFILEに保存する履歴数 |
HOME | カレントユーザーのホームディレクトリ |
HOSTNAME | ホスト名 |
LANG | ロケール(言語処理方式) |
PATH | コマンドやプログラムを検索するディレクトリリスト |
PS1 | プロンプトの表示文字列 |
PWD | カレントディレクトリ |
環境変数を表示するには、env
コマンドやset
コマンド、printenv
コマンドを用います。
コマンド | 説明 |
---|---|
env | 全ての環境変数を表示 |
set | 全ての環境変数を表示 |
printenv 環境変数 | 指定した環境変数の値を表示 |
また、環境変数を削除するには、unset
コマンドを用います。
unset 環境変数
環境変数 PATH
シェルでコマンドを実行すると、シェルはまずビルトインコマンドをチェックします。ビルトインコマンドはシェル自体に組み込まれているコマンドで、cd
、echo
などがあります。
ビルトインコマンドに存在しない外部コマンドは、PATHという環境変数に指定されたディレクトリから探し出します。外部コマンドには、例えば、ls
、cat
、grep
、ssh
などがあります。シェルがこれらの外部コマンドを実行するためには、実行ファイルがシステムのどこにあるかを知る必要があります。
PATHにディレクトリの値を追加することで、新しくコマンドを登録することができるようになります。
例えば、環境変数PATHに新しく、/opt/binディレクトリを追加する場合は次のようにします。
$ PATH=$PATH:/opt/bin
右側の$PATH
は現在の環境変数PATHの値を参照しています。このため、現在の環境変数PATHの値の末尾に/opt/binが追加されたものが新しい環境変数PATHとなります。
$ PATH=/opt/bin
としてしまうと、他のコマンドが使えなくなってしまうため十分注意しましょう。
type
使いたいコマンドファイルの種類を知りたい場合、type
コマンドが有効です。type
コマンドの後にコマンド名を指定して、そのコマンドの種類(ビルトインコマンド、外部コマンド、エイリアスなど)を確認できます。
type コマンド名
例)
$ type cd cd はシェル組み込み関数です $ type ls ls は `ls --color=auto' のエイリアスです $ type cat cat は /usr/bin/cat です
which
コマンドが外部コマンドの時、ファイルがどこにあるのかを知るには、which
コマンドを用います。
which コマンド名
which
コマンドは環境変数PATH
に指定されているディレクトリの内容によりrootユーザーでないと実行できない場合があります。
例)
$ type cat cat は /usr/bin/cat です $ which cat /usr/bin/cat
環境設定ファイル
環境変数は、シェルとその子プロセスに対して有効です。シェルを終了するとこれらの変数は消えてしまいます。このため、設定を保存したい場合はbashに関する設定ファイルに書き込みます。
読み込まれる設定ファイルにはさまざまなものがありますが、環境変数やシェル変数、エイリアスなどを変更する場合は、ユーザーごとのホームディレクトリに存在する.bashrc
や.bash_profile
に記述します。
システム全体に適用するには、/etc/profile
や、/etc/profile.d/
以下のファイルなどに記述します。
環境設定ファイルはいくつかあり、システムによっても異なるのですが、特に使われているものは以下です。
環境設定ファイル | 説明 |
---|---|
/etc/profile または /etc/profile.d/以下の設定ファイル | ログイン時に全てのユーザーが読み込みます。システム全体に適用されます。 |
~/.bashrc | bashが起動するたびに実行されます。ユーザーごとに適用されます。 |
~/.bash_profile | ユーザーがログインする度に実行されます。ユーザーごとに適用されます。 |