bash -c "source test.sh"
— несколько необычный способ запуска
test.sh
, объединяющийsource
с отдельной оболочкой.Это можно обнаружить, взглянув на
$0
; типичная форма была быif [ "${0##*/}" = "test.sh" ]; then # being run directly else # being sourced fi
, так как
$0
не будет отражать сценарий, когда задействованsource
.Помимо обработки аргументов, не должно быть никакой практической разницы с точки зрения
test.sh
междуbash test.sh
и
bash -c "source test.sh"
, однако последняя форма предпочтет
test.sh
вPATH
test.sh
в текущем каталоге.См. В чем разница между поиском ('.' или «источник» )и выполнение файла в bash? для получения подробной информации о различиях при поиске сценария в текущей оболочке.