CUESTIÓN
Yo edito mis ficheros. Yo los compilo mediante
make
. Y, cuando voy a ejecutar la primera
prueba de esta sesión, me aparece:
<ENCINA>/home/gyermo/PRUEBA$ prueba
ksh: prueba: no encontrado
Y yo es que alucino porque el fichero prueba sí está:
<ENCINA>/home/gyermo/PRUEBA$ ls
prueba prueba.c prueba.o raiz.c raiz.h raiz.o Makefile
¿Qué me está pasando?
SOLUCIÓN
Cuando en la shell tecleamos directamente el nombre de un fichero,
se supone que es un fichero ejecutable y que queremos ejecutarlo
en estos momentos. Así, si tecleo prueba, la shell supone que
quiero ejecutar un fichero que se llama prueba
. Pero
¿cuál de todos los posibles ficheros que se llaman prueba y que
están en el disco duro?
El sistema operativo consulta la variable de entorno
PATH
para ver en qué directorios debe buscar
los ficheros ejecutables. En MS-DOS, si el sistema no encuentra
el fichero en ninguno de los directorios del path, busca
en el directorio actual. En Unix, por razones de seguridad,
hay que especificar explícitamente el directorio actual en
el path para que busque ahí. Esto se hace incluyendo
un punto (.) en PATH
. Podéis ver el contenido de
la variable de entorno PATH
, mediante:
echo $PATH
El caso que se preguntaba corresponde a que en la variable
de entorno PATH
no aparece el directorio actual.
© 2003 Guillermo González Talaván.