2017-07-30 4 views
1

私は自分のcrontabに次の行を持っていた:このcronジョブでチルダが有効なパスが展開されないのはなぜですか?

PY=/home/schemelab/install/miniconda/bin/python 
ST=~/prg/surgetrader 

# SURGE TRADER 

00 * * * * cd $ST/src/ ; $PY download.py; $PY scan.py --buy 1 

をそして、それは私の電子メールでのエラーメッセージを実行したときだった。

X-Cron-Env: <GT=~/prg/gridtrader> 
X-Cron-Env: <AGT=~/prg/adsactly-gridtrader> 
X-Cron-Env: <PY=/home/schemelab/install/miniconda/bin/python> 
X-Cron-Env: <ST=~/prg/surgetrader> 
X-Cron-Env: <SHELL=/bin/sh> 
X-Cron-Env: <HOME=/home/schemelab> 
X-Cron-Env: <PATH=/usr/bin:/bin> 
X-Cron-Env: <LOGNAME=schemelab> 
Date: Sun, 30 Jul 2017 09:50:02 -0400 (EDT) 

/bin/sh: 1: cd: can't cd to ~/prg/surgetrader/src/ 
/home/schemelab/install/miniconda/bin/python: can't open file 'takeprofit.py': [Errno 2] No such file or directory 

しかし、パスは確かに存在します。私はチルダが拡大されていないと思う。

+1

Btw: '/ bin/sh'は通常' bash'ではありません。 – Cyrus

+1

@Cyrusそしてbashで実装されていても、必ずしもbashのようには動作しません –

+0

これは重複しているという質問に親切にリンクできますか? –

答えて

1

チルド解像度はbash機能です。しかし、あなたのcronjobはBashを通して実行されません(あなたが望むなら、あなたは明示的にそれを行うことができます)。ただし、$HOMEを使用すると、シェルとは別にユーザーのホームを参照できます。

詳細については、Bash reference manualを参照してください。

+1

問題は、この行の展開順序(変数展開前のチルダ展開)です。 'cd $ ST/src /'です。 See:https://stackoverflow.com/q/32276909/3776858 – Cyrus

+0

チルドの拡張は 'bash'に固有のものではありません。 – chepner

関連する問題