2014-01-20 3 views
6

私のスクリプトは、Makefileによって使用されるいくつかの環境変数を設定します。したがって、すべてのシェル、bash(set varriableにエクスポート)、およびtcsh(setenv)私たちはPythonを実行した場所から、$ SHELL varrriableを使ってみましたが、いつも私のシェルとして私にshを与えました。Pythonスクリプトから現在のシェルタイプを取得する

私はPythonスクリプトから正しいシェルタイプを得ることができますか、それとも常に$ SHELL変数として "SH"を出力しますか。

+0

なぜこのためのシェルが必要ですか? 'subprocess。*'関数には環境変数の引数があります! – ThiefMaster

+1

'$ SHELL'は現在のシェルではなく、ログインシェルを提供します。 Makefileに特定のシェルを指定したり、 '#!'を使うのはなぜですか? – cdarke

+0

異なるユーザーが異なるシェル設定を持つことができ、スクリプトがどのシェルからそれを呼び出したのかを検出し、それに基づいて正しいデータvarriable(setenv/export)を出力する必要があるため、これが必要です。 – Viks

答えて

5

死んだ人にこれを持って帰って申し訳ありませんが、私はちょうどこれを自分でしました。 次はあなたの現在のシェルにあなたのパスを与える必要があります。

from os import environ 
print(environ['SHELL']) 

あなたが探しているすべての環境変数とシェルを交換することができるはずです。

関連する問題