MENU

【C++】プログラムから環境変数の使い方

この記事では環境変数とは?から、C++のプログラムから環境変数を使用する方法まで解説していきます。

本記事で使用している環境は以下です。
Ubuntu 24.04 LTS
C++17

目次

環境変数とは

環境変数は、オペレーティングシステムとアプリケーションの動作を制御するために使用される変数です。キーと値のペアになっており、システム全体またはユーザ単位で設定され、システムの設定情報やアプリケーションに影響を与えることができます。

環境変数の役割

設定情報の提供

システムやアプリケーションが動作するための設定情報を提供します。例えば、プログラムが使用するディレクトリのパスや、動作モードなどを設定できます。

アプリケーション間の情報共有

複数のアプリケーション間で共通の情報を共有するために使用されます。

envコマンドを使用すれば、現在のシェル環境で設定されている環境変数を表示したり、一時的に環境変数を設定してコマンドを実行したりできます。

env

上記のコマンドを実行してみると、以下のように設定されている環境変数一覧を確認できます。

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
HOME=/home/username
USER=username
SHELL=/bin/bash
LANG=en_US.UTF-8
...

プログラムから環境変数の使い方

C++のプログラムから環境変数を取得したり、編集したりしてみましょう。

環境変数の取得

#include <cstdlib>
#include <iostream>

int main() {
    const char* path = std::getenv("PATH");
    if (path) {
        std::cout << "PATH: " << path << std::endl;
    } else {
        std::cout << "PATH environment variable is not set." << std::endl;
    }
    return 0;
}

解説

環境変数を操作するgetenvなどの関数を使用するためにcstdlibライブラリをインクルードします。

const char* path = std::getenv("PATH");

この部分では、getenv関数を使用して環境変数PATHを取得しています。getenv関数は対象の環境変数への文字列型ポインタを返します。

環境変数の設定

#include <cstdlib>
#include <iostream>

int main() {
    // 環境変数を設定
    if (setenv("MY_VAR", "my_value", 1) != 0) {
        std::cerr << "Failed to set environment variable" << std::endl;
        return 1;
    }

    // 環境変数を取得して表示
    const char* my_var = getenv("MY_VAR");
    if (my_var) {
        std::cout << "MY_VAR: " << my_var << std::endl;
    } else {
        std::cout << "MY_VAR is not set." << std::endl;
    }

    return 0;
}

解説

環境変数の設定にはsetenv関数を使用します。この例では環境変数MY_VARmy_valueに設定します。第三引数の1は、すでに存在する環境変数を上書きすることを示します。

環境変数の削除

#include <cstdlib>
#include <iostream>

int main() {
    // 環境変数を設定
    if (setenv("MY_VAR", "my_value", 1) != 0) {
        std::cerr << "Failed to set environment variable" << std::endl;
        return 1;
    }

    // 環境変数の削除
    unsetenv("MY_VAR");

    // 環境変数を取得して表示
    const char* my_var = getenv("MY_VAR");
    if (my_var) {
        std::cout << "MY_VAR: " << my_var << std::endl;
    } else {
        std::cout << "MY_VAR is not set." << std::endl;
    }

    return 0;
}

解説

環境変数の削除にはunsetenv関数を使用します。使い方は簡単で、引数に削除したい環境変数を指定するだけです。

最後に

今回は環境変数の概要とC++のプログラムからの操作方法について紹介しました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

20代の組み込みソフトウェアエンジニア
主な使用言語はC++

---------------------資格---------------------
応用情報技術者
ネットワークスペシャリスト

目次