この記事で分かること
- Linuxの環境変数が何か分かる
- PythonプログラムからLinuxの環境変数を取得する方法が分かる
PythonプログラムでLinux環境変数を取得する2つの方法の概要
今回は、Pythonを使って、Linuxの環境変数をプログラムで取得する方法を説明します。
環境変数とは、「Linuxシステムのアプリケーション間で使われる設定値」のことです。アプリケーションは、環境変数にデータを一時保存することによって、効率的に動作することができます。例えば、2つのLinuxのアプリケーションがあったとした場合、1つ目のアプリケーションが環境変数に値を保存して、2つ目のアプリケーションで保存された値を読むということを行ったりします。
この記事を読むことよって、Pythonプログラム上でLinuxの環境変数を扱うことが可能になります。
PythonプログラムでLinux環境変数を取得する環境
Linuxの環境変数を取得する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
-
【Python】バージョン確認の方法【→プログラミング初心者向け】
続きを見る
レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。
もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
-
【Linux】レンタルサーバーでプログラミングする方法【→ブログのサーバーでできる!】
続きを見る
PythonプログラムでLinux環境変数を取得するサンプルプログラム
ここでは、次の2つのLinuxの環境変数を取得するサンプルプログラムを説明します。
- 「os.environ」を使う方法
- 「commands.getoutput」を使う方法
これらの方法は、Linuxの環境変数を扱う時に使うライブラリによって、方法が異なっています。
1.Linuxの環境変数を取得する(os.environを使う)
1つ目は、「os.environ」と呼ばれるライブラリモジュールを使ってLinuxの環境変数を取得する方法を紹介します。
「os」ライブラリのインポート
まず、OS(オペレーティングシステム)に依存した機能を使うためのライブラリ「os」をインポートします。
import os
「os」ライブラリをインポートする
「os.environ」を使ったサンプルプログラムの作成
今回の例では次の3つのLinuxの環境変数を取得することにします。
- 言語設定「LANG」
- 端末の種類「TERM」
- 実行中のシェル「SHELL」
if __name__ == '__main__':
lang = os.environ["LANG"]
print(lang)
term = os.environ["TERM"]
print(term)
sh = os.environ["SHELL"]
print(sh)
- 「os」ライブラリの「os.environ」で環境変数「LANG」の値を変数「lang」に格納する
- 変数「lang」の内容を表示する
- 「os」ライブラリの「os.environ」で環境変数「TERM」の値を変数「term」に格納する
- 変数「term」の内容を表示する
- 「os」ライブラリの「os.environ」で環境変数「SHELL」の値を変数「sh」に格納する
- 変数「sh」の内容を表示する
「os.environ」を使ったサンプルプログラムの実行結果
下記のように、LANG、TERM、SHELLのそれぞれの環境変数の値が何であったかを確認することができています。
$ python test.py
en_US.UTF-8
xterm
/bin/bash
2.Linuxの環境変数を取得する(commands.getoutputを使う)
2つ目には、「commands.getoutput」と呼ばれるライブラリモジュールを使ってLinuxの環境変数を取得する方法を紹介します。
「commands」ライブラリのインポート
システムへコマンド文字列を渡して実行するライブラリ 「commands」をインポートします。
import commands
「commands」ライブラリをインポートする
「commands.getoutput」を使ったサンプルプログラムの作成
「commands」ライブラリの「getoutput」関数によってコマンドの出力のみを返すようにします。
if __name__ == '__main__':
print(commands.getoutput("printenv | grep LANG"))
print(commands.getoutput("printenv | grep TERM"))
print(commands.getoutput("printenv | grep SHELL"))
- 「commands」ライブラリの「getoutput」関数で文字列「LANG」を含む行だけ表示する
- 「commands」ライブラリの「getoutput」関数で文字列「TERM」を含む行だけ表示する
- 「commands」ライブラリの「getoutput」関数で文字列「SHELL」を含む行だけ表示する
「commands.getoutput」を使ったサンプルプログラムの実行結果
printenvのLinuxの出力をそのまま表示しているので、環境変数の値だけではなく、変数の名前自体も見えていることが分かります。
もちろん環境変数を利用する場合は、値の方を利用するので、=(イコール)の先の文字列の値部分を使用する必要があります。
$ python test.py
LANG=en_US.UTF-8
TERM=xterm
SHELL=/bin/bash