2013-12-04 3 views
1

В чем разница запуска скрипта как . или как ./? Например:В чем разница. а также ./?

echo "echo hi" > script.bash 
chmod +x script.bash 
./script.bash 
# outputs hi 
. script.bash 
# outputs hi 
+2

Абсолютно все. –

+0

@ IgnacioVazquez-Abrams Не очень полезный ответ, каким бы он ни был. – kqr

+2

@kqr: Вот почему это комментарий, а не ответ. –

ответ

3

./ ярлык для текущего каталога, если вы звоните ./script.bash вы просто вызвать скрипт в текущем каталоге.

. script.bash что-то другое, здесь . ярлык для source a file, длинная версия будет source script.bash. Sourcing означает, что скрипт выполняется в текущем контексте. Например. если ваш скрипт меняет каталог, вы фактически находитесь в этом каталоге после запуска скрипта, чего бы не случилось, если бы вы просто выполнили свой сценарий с помощью ./script.bash, так как тогда сценарий имеет свой собственный контекст.

+0

ах хорошо, тогда мой ответ полностью не прав ...: P я удаляю его. –

0

./filename означает, что вы имеете в виду имя файла в текущем каталоге.

. filename - это своего рода оператор включения (содержащий внешний файл в вашем текущем файле сценария, который можно использовать для хранения функций во внешнем файле, а затем иметь возможность вызвать их в файле сценария). Я использую его для этого цель в моих скриптах, очень удобно!

Edit: Odi объяснил это намного лучше;)

Смежные вопросы