注: これはPython: Persistent shell variables in subprocessと同じ質問ではありません。その質問は実際にはシェル変数ではなく環境変数に関するものです。
time
シェル組み込みコマンドを使用して、csh で行っている基本的なベンチマークを自動化しようとしています。time
次のように、シェルで同じ名前の変数を設定することにより、出力を微調整できます。
set time=(1000000000 "%U %S %E %P %W %X %D %K %M %F %R %I %O %r %s %k %w %c")
ただし、これはもちろん環境変数ではないためenv
、コンストラクターのパラメーターに渡すことはできませんsubprocess.Popen
(最初に試しました...)。それを行うための引数を悪用して(とにかく)、実際の作業(適切に表示するために短縮)することで、一緒にハックできます。cmd
time_cmd = 'set time=(1000000000 "%U %S %E %P %c"); time ./some_func'
p = subprocess.Popen(cmd, executable="/bin/csh", shell=True, ...)
それは期待どおりに機能しますが、実際には正しい方法ではないようです (そしてcmd
、さまざまなシェルの動作を微調整したい場合は、かなり恐ろしい構造になる可能性があります)。
subprocess
このクラッジ以外にシェル変数を設定する方法はありますか?