rc.local запускает файл .sh в неправильном каталоге

В rc.local я добавил строку для моего файла оболочки, которую я хочу запустить при загрузке:

/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/?

3
задан 12 May 2012 в 01:15

2 ответа

Ваш сценарий не содержит команды для установки текущего каталога, таким образом, это работает в том же каталоге как процесс, который вызвал его. Когда это выполняется от 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 не может загрузить банку, то java не выполняется.

4
ответ дан 12 May 2012 в 01:15
#!/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
1
ответ дан 12 May 2012 в 01:15

Другие вопросы по тегам:

Похожие вопросы: