次のように、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'
その後、両方ともシェルへの同じ呼び出しで実行されます。必要に応じて、このコマンドをecho
Pythonプログラム呼び出しに置き換えてください。