Команда source
выполняет предоставленный сценарий (разрешение на исполнение не обязательно ) в current shell окружении, в то время как команда ./
выполняет предоставленный сценарий executable в new shell. Команда
source
имеет синоним . filename
.
Для большей ясности посмотрите на следующий сценарий, который устанавливает псевдоним.
make_alias
#! /bin/bash
alias myproject='cd ~/Documents/Projects/2015/NewProject'
Теперь у нас есть два варианта выполнения этого сценария. Но с опцией only one, нужный псевдоним для текущего shell'а можно создать среди этих двух вариантов.
Вариант 1: ./make_alias
Сначала сделать скрипт исполняемым.
Выполнить
chmod +x make_alias
Проверить
./make_alias
Вывод
alias
*Whoops! * Псевдоним отсутствует в новой оболочке.
Перейдем ко второму варианту.
Вариант 2: source make_alias
Выполнить
**nothing**
or
source make_alias
Проверить
. make_alias
Выход
alias
Да Псевдоним установлен.