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