Условно разделите скрипт на две части:
[ -f "/usr/bin/shoes" ] && cd '~/Рабочий\ стол/Ruby/Shoes';
source shoes setup.rb || echo "Не установлен shoes"
они в данном случае выполняются отдельно.
source shoes setup.rb, возвращая ненулевой статус из за чего выводится echo "Не установлен shoes"
вероятно, имелось в виду:
#!/bin/bash
[ -f "/usr/bin/shoes" ] && cd '~/Рабочий\ стол/Ruby/Shoes' && source shoes setup.rb || echo "Не установлен shoes"