我为rc.local
我想在启动时运行的 shell 文件添加了一行:
/direc/tory/<fileName>.sh
脚本如下:
#!bin/sh
wget "http://somesite.org/someJava.jar" -O /direc/tory/someJavaFile.jar
java -d64 -Xincgc -Xmx512M -jar /direc/tory/someJavaFile.jar
我以为它会运行并加载到/direc/tory/
文件夹中,但它一直在运行,/
并且还将所有文件保存在那里。
我要怎么做才能强制它在/direc/tory/
文件夹中运行?
答案1
您的脚本不包含任何设置当前目录的命令,因此它在与调用它的进程相同的目录中运行。当从 执行时(rc.local
即从 执行)init
,当前目录是 根目录/
。
添加cd /direc/tory/
到您的脚本中。顺便说一句,请注意#!/bin/sh
(#!bin/sh
这里恰好起作用只是因为您从根目录执行脚本;依赖这个是一个非常糟糕的主意。)
#!/bin/sh
set -e
cd /direc/tory
wget "http://somesite.org/someJava.jar" -O someJavaFile.jar
java -d64 -Xincgc -Xmx512M -jar someJavaFile.jar
我还在set -e
脚本中添加了该命令。如果某个命令失败,该命令就会停止。例如,如果wget
无法下载 jar,则java
不会执行。
答案2
#!/bin/sh
wget "http://somesite.org/someJava.jar" -O /direc/tory/someJavaFile.jar
cd /direc/tory
java -d64 -Xincgc -Xmx512M -jar /direc/tory/someJavaFile.jar