お使いの Linux システムは、シェルや他のプロセスがアクセスできる情報を格納するために環境変数を使用します。これらの変数は、ユーザーセッションとシステム構成に関する役立つデータを保持しています。
基本的な環境変数の探索
特定の変数の値を確認するには、その名前の前に$記号を付けます。例えば、次のコマンドを実行します。
echo $HOME
このコマンドはホームディレクトリへのパスを表示します。これは/home/peteのような形式になるかもしれません。
次に、別のものを試してみましょう。
echo $USER
これは現在のユーザー名を出力します。しかし、この情報はどこから来るのでしょうか?それはシェルの環境に格納されています。
Linux における env の役割
現在セッションに設定されているすべての環境変数を表示するには、envコマンドを使用できます。linux env commandは、シェルの構成を調べるための基本的なツールです。
env
envコマンドを実行すると、キーと値のペアのリストが出力されます。表示される内容の簡単な例を次に示します。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/bin
PWD=/home/user
USER=pete
効果的なシステム管理のためには、linux envを理解することが不可欠です。
PATH 変数の重要性
env linuxの出力の中で最も重要な変数の 1 つがPATHです。次のコマンドでその内容を具体的に確認できます。
echo $PATH
このコマンドは、コロンで区切られたディレクトリのリストを返します。コマンドを入力すると、システムはこれらのディレクトリを検索して、対応する実行可能ファイルを探します。
手動で/opt/coolapp/binのような標準的でないディレクトリにプログラムをインストールしたと想像してください。coolcommandと入力して実行しようとすると、「command not found」エラーが発生する可能性があります。これは、プログラムが含まれるディレクトリがPATH変数にリストされていないため、シェルがどこを探せばよいかわからないからです。
これを修正するには、新しいディレクトリを含めるようにPATH変数を変更できます。カスタムディレクトリをPATHに追加することで、ターミナル上のどこからでもシェルがプログラムを見つけて実行できるようになります。
現在のセッションの環境変数の設定
ターミナルで次のコマンドを実行すると、現在のセッションでのみ環境変数TESTが設定されます。
export TEST=test
この後、次のように実行すると:
echo $TEST
出力は次のようになります。
test
この変数は、ターミナルセッションが開いている限り利用可能です。ターミナルを閉じて再度開くと、変数は存在しなくなります。
環境変数をセッション間で永続化する
環境変数をターミナルセッションを閉じて再度開いた後でも、すべてのターミナルセッションで利用可能にしたい場合は、シェルの起動ファイルに追加する必要があります。多くの Linux ディストリビューションや macOS でデフォルトのシェルである Bash の場合、このファイルは通常、ホームディレクトリにある.bashrcです。
設定方法は次のとおりです。
- お好みのテキストエディタで
.bashrcを開きます。例えば:
nano ~/.bashrc
- ファイルの末尾に
export行を追加します。
export TEST=test
-
エディタを保存して終了します(Nano の場合、これは
Ctrl+X、次に確認のためにY、そしてEnterです)。 -
ターミナルを再度開かずに変更をすぐに適用するには、次を実行します。
source ~/.bashrc
その後、TEST変数はすべての将来のターミナルセッションで利用可能になり、ターミナルを閉じて再度開いた後でもecho $TESTを実行するとtestと表示されます。
シェル設定ファイルに関する注意点
- Bash(多くのシステムでデフォルト)の場合、非ログイン対話型シェルに関連するファイルは
~/.bashrcです。 - Zshの場合、同等のファイルは通常
~/.zshrcです。 - Fishの場合、通常は
~/.config/fish/config.fishを使用します。