明示的に呼び出すと、 'setenv'コマンドはtcshシェルでは機能しません。

明示的に呼び出すと、 'setenv'コマンドはtcshシェルでは機能しません。

次のように、tcshシェルでsetenvコマンドを実行できます。

echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
setenv START_TIME `date +%s`
echo $START_TIME
1499355967

ただし、以下のように明示的に実行するたびには機能しません。これはPythonサブプロセス呼び出しを介して実行するときにシェルを指定する必要があるためです。それ以外の場合は、shデフォルトでシェルを呼び出します。

/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`'
echo $START_TIME
START_TIME: Undefined variable.

ここで問題は何ですか?この問題をオンラインで検索しましたが、同様の問題が見つかりませんでした。これはとても残念です。

ベストアンサー1

/usr/bin/tcshスクリプトの最初の行でこれを使用すると、別のシェル呼び出しが実行されます。コマンドは、echoコマンドを含む「閉じた」シェルで実行されます。

なぜ走らないの?両方最初のコマンドラインは次のとおりです。

/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`; echo $START_TIME'  

その後、両方ともシェルへの同じ呼び出しで実行されます。必要に応じて、このコマンドをechoPythonプログラム呼び出しに置き換えてください。

おすすめ記事