2015-11-02 2 views
0

В UNIX, если вы хотите запустить скрипт, расположенный в PWD, вы делаете:Как запустить скрипт Unix

./somescript.sh 

Но есть также:

. somescript.sh 

Что делает второй команда делает?

+0

http://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script –

+0

http://ss64.com /bash/source.html –

ответ

0

Точка является псевдонимом для команды «источник»: http://ss64.com/bash/source.html.

Главное отличие состоит в том, что первый синтаксис пытается выполнить сценарий, запустив для него некоторый интерпретатор (как определено значением магического заголовка hashbang). Для файла оболочки интерпретатор обычно является bash или sh, поэтому ваша оболочка запускает новый процесс оболочки как подпроцесс и передает скрипт в качестве параметра. Сценарий будет изолирован в этом подпроцессе. Если он, например, задает переменную окружения, она будет изолирована подпроцессу и исчезнет при выходе из подпроцесса

Поиск файла, OTOH, инструктирует текущую оболочку читать инструкции в указанном файле. В этом случае изменения изменят текущую среду. Измененные переменные среды будут видны после завершения команды.

Sourcing работает только для сценариев оболочки, написанных для текущей оболочки. Выполнение выполняется для любого типа исполняемого файла сценария/программы/исполняемого файла.