LINUX.ORG.RU

Bash синтаксис.


0

0

День добрый. Просветите меня пожалуйста, что дает добавление точки в начале команды.

Т.е. есть скрипт, который не работает, если запускать его так: ./vars

в то же время прекрасно работает если запускать его так . [здесь пробел] ./vars

anonymous

точка это то же самое что sh =) если у скрипта есть права на исполнение - должно и без точки работать.

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

>если у скрипта есть права на исполнение - должно и без точки работать

Нет. Если у скрипта нет прав на исполнение, то хоть с точкой, хоть без нее ты получишь отказ в доступе. Исполнение возможно только с правом на исполнение как через параметр шелла или через точку.

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

У скрипта нет прав на исполнение. Но если сделать скрипт исполняемым - он все равно не работает так как нужно.

В любом случае спасибо за потраченное на ответ время.

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

В самой первой строчке скрипта нужно не забыть прописать

#!/bin/bash

или

#!/bin/sh

DiGital
()

ээх. Команда:

. file

-- означает "прочитать команды из файла и исполнить не отходя от кассы"

Если там будет exit, интерпретатор благополучно закроется; если там объявлена функция, она будет действительна и после окончания скрипта и т.п.

В частности, таким образом можно внутри скрипта прочитать настройки и/или определить функции из другого скрипта.

Чтобы выполнить скрипт, на который нет прав на исполнение, надо сделать так: sh script или даже $SHELL script

Ну, или исполнение разрешить: chmod a+x script

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

>или даже $SHELL script

Извините, погорячился ) Так лучше не делать, конечно же.

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

[auriga (/tmp)]$ ls -l test.sh 
-rw-r--r-- 1 user user 10 Июн  2 17:42 test.sh
[auriga (/tmp)]$ cat test.sh 
echo "ok"
[auriga (/tmp)]$ ./test.sh 
bash: ./test.sh: Отказано в доступе
[auriga (/tmp)]$ sh test.sh 
ok
[auriga (/tmp)]$ . test.sh
ok

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

. это аналог source. Скрипт выполнятеся в текущем экземпляре шелла в независимости стоит ли на нём (скрипте) +x или нет.

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

>Нет. Если у скрипта нет прав на исполнение, то хоть с точкой, хоть без нее ты получишь отказ в доступе. Исполнение возможно только с правом на исполнение как через параметр шелла или через точку.

ерунда.

[dikiy@rosh ~]$ cat > /tmp/test.sh echo lol [dikiy@rosh ~]$ . /tmp/test.sh lol [dikiy@rosh ~]$ /tmp/test.sh bash: /tmp/test.sh: Отказано в доступе [dikiy@rosh ~]$ ll /tmp/test.sh -rw-r--r-- 1 dikiy dikiy 9 2008-06-02 21:59 /tmp/test.sh [dikiy@rosh ~]$

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