環境変数をインラインで指定する:KEY=value コマンドの使い方

スポンサーリンク

環境変数をインラインで指定する:KEY=value コマンドの使い方

KEY=value command の形式でコマンドの前に環境変数を書くと、そのコマンドだけに環境変数を渡せます。アプリの起動オプションを切り替えるときによく使います。

PORT=8080 npm run dev
NODE_ENV=production npm run build
RAILS_ENV=production rails db:migrate

基本的な書き方

# 環境変数名=値 コマンド
KEY=value command

# スペースは入れない(KEY = value はエラー)
PORT=8080 npm start

複数の環境変数を指定するときはスペースで区切って並べます。

HOST=0.0.0.0 PORT=8080 npm run dev
NODE_ENV=production DEBUG=false npm run build

よく使う実用例

Node.js / npm

# ポートを変えて起動
PORT=3001 npm run dev

# 本番ビルド
NODE_ENV=production npm run build

# デバッグログを有効化
DEBUG=* node app.js
DEBUG=express:* node app.js

# テストの色付き出力を強制
FORCE_COLOR=1 npm test

Rails

# 本番環境でマイグレーション
RAILS_ENV=production rails db:migrate

# 本番環境でサーバー起動
RAILS_ENV=production rails s

# カスタム変数を渡す
DATABASE_URL=postgres://localhost/myapp rails db:migrate

その他

# Rust:ログレベルを指定
RUST_LOG=debug cargo run

# Go:クロスコンパイル
GOOS=linux GOARCH=amd64 go build

# Python
FLASK_ENV=development python app.py
DJANGO_SETTINGS_MODULE=config.settings.local python manage.py runserver

export との違い

export で設定した環境変数はシェル全体(以降のすべてのコマンド)に影響します。インライン指定はそのコマンドのみに限定されます。

# export:シェル全体に影響する
export NODE_ENV=production
npm run build   # NODE_ENV=production
npm run dev     # NODE_ENV=production(次のコマンドにも引き継がれる)

# インライン指定:そのコマンドだけ
NODE_ENV=production npm run build   # NODE_ENV=production
npm run dev                         # NODE_ENV は未設定(影響なし)

一時的に切り替えたいだけならインライン指定の方が安全です。


env コマンドと組み合わせる

env コマンドを使うと、特定の環境変数を除いた状態でコマンドを実行できます。

# 環境変数を追加して実行(KEY=value と同じ)
env NODE_ENV=production npm run build

# 特定の環境変数を除外して実行
env -u HOME node app.js

# 環境変数をすべてクリアして実行(クリーンな状態で確認したいとき)
env -i PATH="$PATH" node app.js

複数コマンドに同じ変数を渡したい場合

インライン指定は1コマンドずつ書く必要があります。同じ変数を複数のコマンドで使う場合は別の方法が向いています。

# サブシェルで export する(そのシェルのみ有効)
(export NODE_ENV=production; npm run build && npm run test)

# スクリプトにまとめる
#!/bin/bash
export NODE_ENV=production
npm run build
npm run test

プロジェクト全体で環境変数を管理するには .env ファイルや direnv が便利です。「direnv入門:インストールと.envrcで環境変数を自動切り替え」も参照してください。


まとめ

方法 スコープ 向いているケース
KEY=value command そのコマンドのみ 一時的に切り替えたい
export KEY=value 以降のコマンド全体 複数コマンドで使いまわす
.env + direnv ディレクトリ単位 プロジェクト全体で管理する
シェルスクリプト スクリプト内 CI や自動化で使う

KEY=value command はシェルの標準的な機能で macOS・Linux 共通で使えます。Windows(PowerShell)では $env:KEY="value"; command という構文になります。