为什么带波浪号的有效路径在此 cron 作业中没有扩展?

Ter*_*non 6 bash cron

我的 crontab 中有以下几行:

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

# SURGE TRADER

00  * * * * cd $ST/src/ ; $PY download.py; $PY scan.py --buy 1
Run Code Online (Sandbox Code Playgroud)

当它运行时,我的电子邮件中的错误消息是:

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
Run Code Online (Sandbox Code Playgroud)

然而,这条路确实存在。我认为代字号没有被扩展或其他什么。

Sum*_*udu 7

波形符~解析是 bash 的一项功能。但是,您的 cronjob 不是通过 Bash 执行的(如果您愿意,您可以明确执行)。但是,您可以使用$HOME独立于 shell 来引用用户主目录。

有关详细信息,请参阅Bash 参考手册。

  • 问题在于这一行中的扩展顺序(波浪号扩展在变量扩展之前):`cd $ST/src/`。请参阅:/sf/ask/2259383661/ (3认同)
  • 波形符扩展并非特定于“bash”。 (2认同)