Как выполнить команду, хранящуюся в переменной?

Как правильно вызвать команду, хранящуюся в переменной? Есть ли разница между 1 и 2? #!/bin/sh cmd="ls -la $APPROOTDIR | grep exception" #1 $cmd #2 eval "$cmd"