¿Cómo ejecutar el comando almacenado en una variable?

¿Cuál es la forma correcta de llamar a algún comando almacenado en una variable? ¿Hay alguna diferencia entre 1 y 2? #!/bin/sh cmd="ls -la $APPROOTDIR | grep exception" #1 $cmd #2 eval "$cmd"