rc.local 在错误的目录中运行 .sh 文件

rc.local 在错误的目录中运行 .sh 文件

我为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

相关内容