Выполняя php-скриптом команду
exec("source vars");
вылетала ошибка
sh: 1: source: not found
Хотя сама команда source является встроеной в bash и напрямую с консоли все выполняется. Варианты с sudo, su и прочими танцами с бубном не помагали.
Как оказалось проблема в том, что в Debian 7 по умолчанию как интерпретатор sh используется dash
Debian and derived Linux distributions such as Ubuntu ship a version of ash, known as dash (Debian Almquist shell), as the default /bin/sh, although Bash is the default login shell for interactive use.
Проверить, что используется у вас :
#ls -l `which sh`
/bin/sh -> dash
Перейти на класический интерпретатор:
sudo dpkg-reconfigure dash
На заданый вопрос ответить No
И вуаля:
# ls -l `which sh`
lrwxrwxrwx 1 root root 4 Окт 14 12:27 /bin/sh -> bash