Linux / macOS の環境変数まとめ

了解です。WordPress 記事用に箇条書き入りで整理し、過剰に詳しく書きます。罫線なしです。


Linux / macOS の環境変数まとめ

環境変数とは、シェルやプログラムが動作するために参照する設定情報です。システムの動作に影響する値を保存したり、プログラム間で情報を共有するために使われます。UNIX 系 OS では、複数のプログラムが連携して動くため、共通の設定情報を渡す仕組みとして生まれました。

環境変数の特徴や使い方を詳しく見ていきます。


環境変数の役割

  • プログラムやシェルが参照する設定情報を提供する
  • 子プロセスやスクリプト間で情報を共有できる
  • コマンド検索パスやホームディレクトリ、アプリケーションの設定などを指定できる

例:

  • HOME:ユーザーのホームディレクトリ
  • PATH:コマンドを検索するディレクトリの順序
  • JAVA_HOME:Java のインストール場所

なぜ環境変数ができたのか

  • UNIX 系 OS は複数のプログラムが連携して動く
  • プログラムごとに設定を書き込むのは非効率
  • 共通の設定情報を渡すため「共有メモ帳」のような仕組みとして環境変数が生まれた

環境変数の種類

  • 一時変数
    • シェル内で作成
    • そのシェルだけで有効
    • 他のシェルや子プロセスには渡らない
    MYVAR=hello echo $MYVAR
  • 環境変数(export)
    • 子プロセスにも引き継がれる
    export MYVAR=hello bash -c 'echo $MYVAR' # hello が表示される
  • 永続化環境変数
    • ログイン時に自動で読み込まれる
    • ユーザー単位: ~/.bashrc, ~/.zshrc, ~/.profile
    • システム全体: /etc/profile, /etc/environment

複数作成と連結

  • 複数の環境変数を作成可能
  • PATH のようにコロン : で複数値を連結できる
export PATH=/opt/myapp/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export EDITOR=vim

呼び出し方

  • シェル内 echo $HOME echo $JAVA_HOME
  • Python import os print(os.environ['JAVA_HOME'])
  • C言語 #include <stdlib.h> char* java_home = getenv("JAVA_HOME");

応用例

  • コマンド検索パスの変更
  • Java バージョンの切り替え
  • 使用するエディタやアプリケーションの設定
  • スクリプト内で設定を共有して自動化

確認方法

  • env コマンド
  • printenv コマンド
  • 現在設定されている環境変数を一覧で確認できる

まとめ

  • 環境変数はシェルやプログラムが参照する設定情報
  • export で子プロセスに渡すことができる
  • 複数作成可能で、値を連結して順序を指定できる
  • 永続化すればログインごとに自動設定される
  • UNIX 系 OS で効率的にプログラム間情報を共有するために生まれた仕組み

環境変数を理解すると、シェルスクリプトやアプリケーションの自動化が格段にやりやすくなります。

ブログ

BLOG

PAGE TOP