ブログ

【入門】環境変数とは?仕組み・確認方法・設定手順(Linux / Python対応)

【入門】環境変数とは?仕組み・確認方法・設定手順(Linux / Python対応)

目次

※この記事にはプロモーションを含みます

WEBMASTERSのトップページへ

はじめに

プログラミングの学習を進めていると、「環境変数を設定してください」という手順が出てきたことはないでしょうか。コマンドが認識されなかったり、APIキーの管理がわからなかったりと、環境変数に関するトラブルは初心者にとってつまずきやすいポイントのひとつです。

環境変数はOSの動作に関わる重要な仕組みですが、LinuxとWindowsで確認・設定方法が異なるため、どこから手をつければよいか迷う方も多いです。

この記事では、環境変数の基本概念から、WindowsとLinuxそれぞれでの確認・設定方法、さらにPythonでの活用方法まで一通り解説します。環境変数でつまずいている方は、ぜひ参考にしてください。

環境変数の基本

環境変数とは、OSが管理するキーと値のペアのことです。プログラムやコマンドはこの値を参照することで、インストール先のパスや設定情報を動的に取得できます。手順書に「環境変数を設定する」と書かれているのは、このキーと値の組み合わせをOSに登録する作業を指しています。

システム環境変数とユーザー環境変数の違い

環境変数には大きく2種類あります。

種類対象設定権限
システム環境変数PCにログインするすべてのユーザー管理者(root/Administrator)
ユーザー環境変数設定したユーザーのみログイン中のユーザー

システム環境変数はPC全体に影響します。全ユーザーが使うソフトウェアのパスを設定する場合などに使います。一方、ユーザー環境変数は設定したユーザーのセッションにのみ適用されます。個人の開発環境に合わせた設定や、APIキーの管理にはユーザー環境変数を使うのが一般的です。

Linuxでは root ユーザーによる /etc/environment/etc/profile がシステム環境変数、~/.bashrc~/.bash_profile がユーザー環境変数の設定ファイルにあたります。

代表的な環境変数の種類

よく使われる環境変数を把握しておくと、トラブル解決がスムーズになります。

環境変数名役割
PATHコマンドを探すディレクトリ一覧/usr/local/bin:/usr/bin
HOMEホームディレクトリのパス/home/username
USER現在のユーザー名username
LANGシステムの言語設定ja_JP.UTF-8
TEMP / TMP一時ファイルの保存先(主にWindows)C:\Users\...\AppData\Local\Temp

このうち最も頻繁に扱うのが PATH です。Pythonやnodeなどのコマンドをターミナルから実行できるのは、そのコマンドが格納されているディレクトリがPATHに登録されているためです。

「パスを通す」とはどういう意味か

「パスを通す」とは、特定のディレクトリをPATH環境変数に追加する作業のことです。

たとえばPythonをインストールしても、そのディレクトリがPATHに含まれていなければ、ターミナルで python と打ってもコマンドが見つからないエラーになります。PATHにディレクトリを追加すること(=パスを通すこと)で、どのディレクトリからでもそのコマンドが実行できるようになります。

環境変数の確認方法(Linux・Windows)

Linuxで環境変数を確認するコマンド

Linuxで環境変数を確認するには、以下の3つのコマンドが使えます。

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

printenv

または

env

どちらも現在のシェルに設定されているすべての環境変数を表示します。printenv のほうがシンプルな出力です。

特定の環境変数を確認する

printenv PATH

または

echo $PATH

echo $変数名 の形式で特定の変数を確認できます。$ をつけることで変数の値として展開されます。

Windowsで環境変数を確認する方法

GUIで確認する手順

1.Win + S で検索を開き「環境変数」と入力
2.「システム環境変数の編集」を選択
3.「環境変数(N)…」ボタンをクリック
4.ユーザー環境変数またはシステム環境変数の一覧が表示される

GUIによる確認が最も直感的な方法で、設定値の一覧を視覚的に把握できます。

コマンドプロンプトで確認する

set

すべての環境変数を一覧表示します。

echo %PATH%

特定の変数を確認する場合は %変数名% の形式を使います。これはLinuxの $変数名 に相当するWindows独自の記法です。

PowerShellで確認する

Get-ChildItem Env:

または特定の変数のみ確認する場合

$env:PATH

PowerShellでは $env:変数名 の形式でアクセスします。この形式がPowerShell特有の環境変数へのアクセス方法です。

特定の環境変数だけを確認したいときの方法

多くの環境変数が表示される中で目的の変数を素早く見つけるには、grep(Linux)や findstr(Windows)でフィルタリングするのが便利です。

Linuxの場合

printenv | grep -i python

-i オプションで大文字・小文字を区別せず検索できます。

Windowsコマンドプロンプトの場合

set | findstr PATH

特定の文字列を含む環境変数を絞り込んで表示できます。

環境変数の設定・変更方法

Linuxで環境変数を設定する方法

一時的に設定する(現在のセッションのみ)

export MY_VAR="hello"

このコマンドを実行すると、現在開いているターミナルセッション内でのみ有効な環境変数が設定されます。ターミナルを閉じると消えます

永続的に設定する

恒久的に環境変数を設定するには、シェルの設定ファイルに記述します。

echo 'export MY_VAR="hello"' >> ~/.bashrc
source ~/.bashrc

~/.bashrc はbashシェルのログイン時に自動で読み込まれる設定ファイルです。source ~/.bashrc で変更を即座に反映させます。zshを使っている場合は ~/.zshrc を対象にしてください。

PATHに追加する場合

echo 'export PATH="$PATH:/usr/local/myapp/bin"' >> ~/.bashrc
source ~/.bashrc

既存のPATHを上書きしないよう、$PATH: の後ろに新しいパスを追記する書き方が基本です。

Windowsで環境変数を設定する方法

GUIで設定する手順

1.「環境変数」の設定画面を開く(前述の手順参照)
2.ユーザー環境変数の「新規(N)…」をクリック
3.変数名と変数値を入力して「OK」
4.すべてのダイアログを「OK」で閉じる

GUIでの設定は即座に保存されますが、新しいターミナルを開くまで反映されないことがあります。

コマンドプロンプトで設定する(現在のセッションのみ)

set MY_VAR=hello

このコマンドは現在のターミナルセッションのみ有効で、ウィンドウを閉じると設定は消えます。

PowerShellで永続設定する

[System.Environment]::SetEnvironmentVariable("MY_VAR", "hello", "User")

3つ目の引数を "Machine" にするとシステム環境変数として設定されますが、管理者権限が必要です。

設定が反映されないときのチェックポイント

環境変数を設定しても反映されない場合、以下を確認してください。

  • .bashrc に追記した後は、source ~/.bashrc を実行するか新しいターミナルを開く
  • zshユーザーは .bashrc ではなく ~/.zshrc を設定ファイルとして使う
  • Windowsでアプリ起動後に設定した場合は、そのアプリを再起動する必要がある
  • PATHへの追記は既存の値を上書きしないよう $PATH:新パス の形式で記述する

Pythonで環境変数を使う方法

Pythonで環境変数を使う方法

os.environで環境変数を取得・設定する

PythonではOSモジュールの os.environ を使って環境変数にアクセスできます。

環境変数を取得する

import os

# 環境変数を取得する
value = os.environ.get("MY_VAR")
print(value)  # hello

# キーが存在しない場合のデフォルト値を指定
value = os.environ.get("MY_VAR", "default_value")

os.environ["MY_VAR"] とも書けますが、キーが存在しない場合に KeyError が発生します。get() メソッドを使うとデフォルト値を指定できるため、安全です。

スクリプト内で環境変数を一時的に設定する

import os

os.environ["MY_VAR"] = "hello"
print(os.environ.get("MY_VAR"))  # hello

スクリプト内での設定はそのプロセス内のみに有効です。スクリプト終了後はOSの環境変数には影響しません

python-dotenvで.envファイルを管理する

開発中のAPIキーやデータベースの接続情報は .env ファイルにまとめて管理するのが一般的です。python-dotenv を使うと、.env ファイルに記述した変数をそのままPythonの環境変数として読み込めます。

インストール

pip install python-dotenv

.env ファイルの作成

DATABASE_URL=postgresql://user:password@localhost/mydb
API_KEY=your_secret_key_here

Pythonコードでの読み込み

from dotenv import load_dotenv
import os

load_dotenv()  # .envファイルを読み込む

api_key = os.environ.get("API_KEY")
database_url = os.environ.get("DATABASE_URL")

.env ファイルはプロジェクトのルートディレクトリに置くのが慣例です。

APIキーなどの機密情報を環境変数で管理するベストプラクティス

機密情報を環境変数で管理する際には、以下の点に注意することがセキュリティ上重要です。

.env ファイルをGitにコミットしない

.gitignore に必ず追記してください。

# .gitignore
.env

.env をコミットすると、APIキーがGitHubなどに公開されてしまうリスクがあります。

.env.example で必要な変数を共有する

実際の値は含めず、変数名とコメントだけを記述したサンプルファイルをリポジトリに含めておくと、チームメンバーが把握しやすくなります。

# .env.example
DATABASE_URL=
API_KEY=

本番環境ではサーバーの環境変数に設定する

本番環境では .env ファイルをサーバーに置くのではなく、Heroku・AWS・Vercelなどのサービスが提供する環境変数設定機能を使うのが安全です。

環境変数のよくあるトラブルと対処法

コマンドを入力してもコマンドが見つからないと表示される

python: command not found'python' は認識されていません といったエラーが出る場合、多くはPATHの設定が原因です。

確認手順(Linux)

which python3
echo $PATH

which コマンドでPythonのインストール場所を確認し、そのディレクトリがPATHに含まれているかを照合します。含まれていない場合は前述の手順でPATHに追加してください。

確認手順(Windows)

コマンドプロンプトで where python を実行します。パスが表示されない場合、PATHへの追加が必要です。

Pythonインストーラーの再実行時に「Add Python to PATH」にチェックを入れることでも解決できます。

環境変数を設定したのに反映されない

設定したはずなのに変数が読み込まれない場合、以下を順番に確認してください。

  • .bashrc への追記後に source ~/.bashrc を実行したか
  • 設定ファイルが使っているシェル(bash / zsh)と一致しているか
  • Windowsの場合、設定後にターミナルやアプリを再起動したか
  • 変数名にスペルミスがないか(大文字・小文字は区別される)

printenv | grep 変数名(Linux)や set | findstr 変数名(Windows)で現在の設定を確認するのが最も確実な方法です。

環境変数にAPIキーを書くときのセキュリティ注意点

環境変数はソースコードにベタ書きするよりも安全ですが、適切に管理しなければセキュリティリスクが生じます。

  • .env ファイルは必ず .gitignore に追加する
  • 本番・開発・テスト環境で異なる変数値を使い、同じキーを共有しない
  • APIキーは定期的にローテーション(再発行)する
  • ログに環境変数の値を出力しないよう注意する

まとめ

この記事では、環境変数の基本から実践的な活用方法まで解説しました。

環境変数を正しく扱えるようになると、開発環境の構築からAPI連携まで、プログラミングの幅が大きく広がります。次のステップとして、Pythonプロジェクトの作成や開発環境のセットアップに取り組んでみてください。

プログラミングをこれから学びたい方・転職を目指している方は、WEBMASTERS のプログラミングスクールもぜひご検討ください。現場で通用するスキルを身につけるための学習環境を提供しています。