開発運用

Linux環境変数の設定方法

シェルと環境変数の読み取りと設定に関する完全かつ包括的な解説(Linux)

Linuxシステムでは、**シェル(Shell)**はユーザーとオペレーティングシステムの間で対話を行う重要なインターフェースです。その中でも、環境変数はシステムの挙動やユーザーの作業環境を制御する重要な役割を果たします。この記事では、シェルおよび環境変数の読み取り、設定、永続化、そしてセキュリティに関する詳細な知識を網羅的に解説します。


1. 環境変数とシェル変数の基本

1.1 シェル変数と環境変数の違い

特徴 シェル変数 環境変数
定義される範囲 現在のシェルセッションのみ シェルセッションとその子プロセス
エクスポートの必要性 exportなしでローカルに使用可能 exportコマンドで環境変数に昇格
持続性 シェル終了時に消失 シェル終了時に消失(永続化には設定ファイル編集が必要)

例:

bash
# シェル変数の設定 MY_VAR="Hello" echo $MY_VAR # 出力: Hello # 環境変数への昇格 export MY_VAR

2. 環境変数の確認

環境変数を確認するにはいくつかの方法があります。

2.1 printenv コマンド

すべての環境変数を表示する:

bash
printenv

特定の変数を表示する:

bash
printenv PATH

2.2 env コマンド

環境変数を一覧表示する:

bash
env

2.3 echo コマンド

変数の内容を確認する:

bash
echo $HOME

3. 環境変数の設定

3.1 一時的な設定

一時的な変数は、現在のシェルセッションでのみ有効です。

bash
export MY_VAR="TemporaryValue" echo $MY_VAR # 出力: TemporaryValue

3.2 永続的な設定

システム再起動後も環境変数を保持するには、シェルの初期化ファイルに記述します。

  • ユーザーごと: ~/.bashrc または ~/.bash_profile
  • システム全体: /etc/profile または /etc/environment

例: ~/.bashrc に次を追加:

bash
export MY_VAR="PersistentValue"

変更を即時反映するには次を実行:

bash
source ~/.bashrc

4. 重要な環境変数の一覧

環境変数 説明
PATH コマンド検索パス /usr/local/bin:/usr/bin:/bin
HOME ユーザーのホームディレクトリ /home/username
SHELL 使用中のシェル /bin/bash
USER 現在のユーザー名 username
PWD 現在の作業ディレクトリ /home/username/work
LANG 言語設定 ja_JP.UTF-8
EDITOR デフォルトのテキストエディタ vim

5. シェルスクリプトでの環境変数の使用

シェルスクリプトでは、環境変数を柔軟に操作できます。

例:
sample.sh:

bash
#!/bin/bash echo "HOMEディレクトリは: $HOME" MY_SCRIPT_VAR="スクリプト内の変数" echo "この変数は: $MY_SCRIPT_VAR"

実行:

bash
bash sample.sh

6. 環境変数の削除とリセット

変数を削除するには unset を使用します。

bash
unset MY_VAR echo $MY_VAR # 出力は空

7. セキュリティ上の注意点

  1. パスの設定: PATH.(カレントディレクトリ)を含めない
  2. 機密データ: パスワードやAPIキーは .env ファイルに保存し、権限を制限
  3. エクスポート制限: 必要最小限の変数だけを export

8. 環境変数のデバッグ

  1. デバッグモード:
bash
bash -x script.sh
  1. シェル起動時の変数確認:
bash
set

9. よくあるトラブルと解決法

問題 原因 解決方法
変数が反映されない export を忘れた export VAR_NAME を実行
パスが無効 PATH にディレクトリがない export PATH=$PATH:/path/to/dir で追記
日本語が文字化け LANG 設定の不備 export LANG=ja_JP.UTF-8

10. まとめ

  • シェル変数はローカルで、環境変数は子プロセスに引き継がれる
  • 一時的な設定は export、永続的な設定は ~/.bashrc
  • セキュリティを意識し、不要な変数は unset

環境変数はシステム管理、開発、デバッグを効率化する重要なツールです。適切な設定と管理を行い、快適なLinux環境を構築しましょう。

Back to top button