LINUX.ORG.RU
решено ФорумAdmin

Запускать скрипт от директории


0

1

Всем привет.

Есть скрипт, который отрабатывает, только если установлена определённая текущая директория (пути у него относительные). Каким образом запустить скрипт из крона? Т.е. что бы она зашёл в директорию и запускал оттуда скрипт? Пройдёт ли cd /dir/ && ./start-script?

★★★
Ответ на: комментарий от VirRaa

странный какой-то вопрос... есть другое решение - засунуть cd внутрь скрипта. так тоже работает...

и так работает:

ksu@ksu:~/test$ cat >WTF
#!/bin/sh
readlink -f "$0"
ksu@ksu:~/test$ chmod +x WTF 
ksu@ksu:~/test$ ./WTF 
/home/ksu/test/WTF

видите? скрипт сам узнаёт, где его запускают.

drBatty ★★
()

>Пройдёт ли cd /dir/ && ./start-script?

есть багофича - если /dir/ нету, или туда запрещено, то скрипт не будет выполнен.

drBatty ★★
()
Ответ на: комментарий от drBatty

> есть багофича - если /dir/ нету, или туда запрещено, то скрипт не будет выполнен.

Скрипт не на баше.

VirRaa ★★★
() автор топика
Ответ на: комментарий от VirRaa

Скрипт не на баше.

не волнует. crond выполняет /bin/sh

пруф

Users can only have a crontab if they have an entry in /etc/passwd; however they do not need to have login shell privileges. Cron jobs are always run under /bin/sh; see crontab(1) for more details.

drBatty ★★
()
Ответ на: комментарий от drBatty

> Users can only have a crontab if they have an entry in /etc/passwd; however they do not need to have login shell privileges. Cron jobs are always run under /bin/sh; see crontab(1) for more details.

Это и так понятно.

VirRaa ★★★
() автор топика
Ответ на: комментарий от VirRaa

>Это и так понятно.

извините. я не знал, что бывают не ленивые /bin/sh

моим лениво выполнять вторую команду, если первая ложна.

drBatty ★★
()
Ответ на: комментарий от drBatty

> есть багофича - если /dir/ нету, или туда запрещено, то скрипт не будет выполнен.

Какая такая багофича? Это именно то, что и должно происходить - почитайте man sh про && и ||. Ленивость здесь тоже ни причем

Например:

cd dir && echo yes || echo no

bjorn
()
Ответ на: комментарий от bjorn

>Какая такая багофича? Это именно то, что и должно происходить - почитайте man sh про && и ||. Ленивость здесь тоже ни причем

я читал. «ленивость» в том смысле, что в математике принято вычислять аргументы, а потом производить операции, а в shell (как и в С) операции AND и OR «ленивые», и вычисляют они все аргументы только в том случае, если это необходимо. В данном случае операции «OR» «лень» вычислять второй операнд, если первый равен true - понятно, что результат тоже true.

drBatty ★★
()
Ответ на: комментарий от bjorn

>Ну я примером уже намекнул - в данном случае, рассматривайте && и || как then и else.

зачем? я и так прекрасно вижу, что вы их используете вместо if then else fi. Я тоже так постоянно делаю. Хотя на самом деле, это логические операции. И не нужно мне ничего намекать... ТС спросил, сработает ли связка && ? Ответ - да, но кроме того, есть и дополнительная багофича. Багом она станет тогда, когда ТС будет писать всегда &&, забыв, что это не запятая, а логическая операция.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.