Cada regla de make puede tener varias lineas de comandos, separadas por fines de linea, pero cada una de estas lineas será interpretada por una instancia diferente de un proceso shell. Ésta es la razón por la que si incluimos las siguientes lineas como lineas de comandos en una regla de make, no tendrán el efecto esperado:
cd /tmp rm *.o
El primer proceso shell se arranca en el directorio en que se ejecuta make, luego cambia a /tmp. El segundo proceso shell, arranca también en el directorio desde donde se ejecuto make y borra los ficheros acabados en .o.
Para poder borrar los fichero de un directorio diferente tendríamos que hacer lo siguiente:
cd /tmp ; rm *.o