Executables in /bin and /usr/bin are not found in path
Terminal.app correctly starting the shell does’t mean much: it runs /usr/bin/login (with the full path) by default, which invokes your default shell (again: defined with a full path) as an interactive login shell (which  will in turn read both .profile and .bashrc and leave you with a working $PATH). Your problem is non-interactive shells, which do neither, do not get any $PATH settings. That seems to point to OS X’ default path settings having somehow been clobbered. 

To check this, run cat /etc/paths. The output should (at the very least) be

/usr/bin
/bin
/usr/sbin
/sbin


(these are the defaults on a pristine OS X install). If the first two are missing, you have your cause – and an easy solution: 

mv /etc/paths /etc/paths.old # if you want to keep the current contents
def_paths=(/usr/bin /bin /usr/sbin /sbin)
for p in ${def_paths[@]}; do echo $p &gt;&gt; /etc/paths; done
cat /etc/paths.old &gt;&gt; /etc/paths # append previous contents


Note that as /etc/paths is owned by root, you will have to sudo su for this to work.