LinuxForum.Fans
Тема

Выполнение shell в rc.local

Автор: antobra 6 сообщений 2104 просмотров
#359963

Ломаю голову второй час над простейшим.

rc.local

text
#!/bin/bash

. /path/somefile.sh

. /path/somefile2.sh

exit 0

/path/somefile.sh

text

#!/bin/bash

echo "Hi" > /path/somefile.txt

Файл /path/somefile2.sh с for и wget выполняется.
Файл /path/somefile.sh не выполняется.

Менял их местами по порядку. Присвоил выполняемым файлам chmod x.

Но все равно тот файл не выполняется. Но самое интересное, если его вызвать в консоли, то он выполняется. Ставил sudo - не помогло. Что за магия? А точнее в чем моя криворукость?

#359969
"antobra" написал:
/path/somefile.sh

В конце файла в последней строке перевод строки (Enter) есть? Должен быть. Что показывает

text
cat -A somefile.sh

?

#360078
yars написал:
[quote="antobra"]/path/somefile.sh

В конце файла в последней строке перевод строки (Enter) есть? Должен быть. Что показывает

text
cat -A somefile.sh

?[/quote]

Показывает

text

#!/bin/bash $ echo "Hi" > /path/somefile.txt $

#360080

Заново поставил ОС и команда echo "Hi" > /path/somefile.txt заработала. Однако нужный код не работает. А именно массивы. Массивы можно объявлять в rc.local?

Например
HELLO[0]="Privet"
HELLO[1]="World!"

?

#360084

Это же обычный сценарий bash/sh, почему нет?

#360085

Кажется я догадался в чем подвох. Все выполняемое в rc.local или в создаваемых файлах в /etc/init.d выполняется в своем "контейнере" и объявленные там переменные и массивы не будут доступны root'у, когда он попробует их вызвать. Алилуя

Войдите или зарегистрируйтесь, чтобы ответить.