#!/bin/bash
cd build
exec cmake ../
exec make
exit 0
Мне кажется, вы неправильно понимаете как работает exec. Он заменяет текущий исполняемый образ новой командой. Поэтому два exec подряд не имеют смысла, т.к. после первого exec bash превратится в
тыкву cmake. Т.е. чтобы запустить сначала cmake а потом make нужно написать
#!/bin/bash
cd build
cmake ../
make
exit 0
В остальном ничего менять не нужно, в отсутствие перенаправления вывода (> / >> / >&) стандартный вывод родителя наследуется порождённым процессом.