当Synology任务计划程序执行脚本时sms.sh
,PATH设置将从script中获取/etc/crontab
。其中不包含Java路径。
默认的登录Shell环境定义为int /etc/profile
。最后有一节添加Java路径。
PATH=$PATH:/var/packages/Java8/target/j2sdk-image/bin # Synology Java runtime enviroment
PATH=$PATH:/var/packages/Java8/target/j2sdk-image/jre/bin # Synology Java runtime enviroment
JAVA_HOME=/var/packages/Java8/target/j2sdk-image/jre # Synology Java runtime enviroment
CLASSPATH=.:/var/packages/Java8/target/j2sdk-image/jre/lib # Synology Java runtime enviroment
LANG=en_US.utf8 # Synology Java runtime enviroment
export CLASSPATH PATH JAVA_HOME LANG # Synology Java runtime enviroment
正如已经给出的评论中已经提到的那样,不建议采购用于交互式shell的配置文件脚本。您可以在/etc/profile
脚本中模仿脚本的行为sms.sh
来设置CLASSPATH PATH JAVA_HOME LANG。
在此特定情况下,有关对脚本中的路径进行硬编码以及由此导致的可移植性降低的突出问题可能是情人优先的。