Esta pregunta ya tiene respuestas aquí:
¿Por qué necesito escribir `./` antes de ejecutar un programa en el directorio actual?
(11 respuestas)
Cerrado
Hace 5 años.
Estoy viendo algunos tutoriales sobre cómoPuedo navegar por el sistema de archivos, pero no importa qué tutorial mire, hay una cosa que nadie parece responder.
Lo entiendo. es el directorio actual. Entiendo que / es el directorio raíz o simplemente puede significar el final de un directorio actual.
Entonces, ¿por qué si quiero ejecutar un programa en el directorio actual tengo que hacer ./ProgramName? ¿Esto se debe simplemente a que ProgramName podría estar en $PATH y tengo que especificar que quiero ejecutar la versión en el directorio actual? ¿Por qué Ubuntu no ejecuta automáticamente la versión del directorio actual si no hay un equivalente en $PATH?
Y si es así, ¿por qué puedo omitir ./ cuando atraveso directorios? Por ejemplo, puedo hacer cd DropBox desde mi directorio de inicio. También puedo hacer cd ./DropBox y parece funcionar, pero ¿por qué no funciona el archivo ./ ¿requerido?
------------Respuesta------------
Déjame intentar explicarlo, para responder a la situación del CD. Ahora tenemos . -- directorio actual, luego / -- directorio raíz, ahora recuerde que / se usa en Linux para indicar la ruta absoluta y no la ruta relativa, cuando comienza la dirección de la ruta. Ahora en tu caso;
Cuando yoSi usas cd nombre_carpeta, estás usando la dirección de ruta relativa a ese directorio (actual), por lo que no es necesario especificar la ruta, ya estás allí.
Cuando usas cd ./folder_name dice, muéveme a la carpeta con el nombre nombre_carpeta en el directorio actual (.).
Ejecutas un programa en el directorio actual, con ./program.sh dice: no te molestes en buscar en las rutas estándar, busca en el directorio actual. carpeta. Esta es la configuración estándar de Linux.
Además (gracias a Sergiy), otra cosa que agregaría es que cuando se usa globstar para manejar archivos se debe usar ./ porque es más seguro. Digamos que ejecuta algo como ls * y tiene un nombre de archivo como -231.txt. El comando ls pensará que -2 es un cambio de comando, pero hay un interruptor como ese en ls , por lo queRecibo un error. Con ls ./* funcionará sin problemas. Entonces, ./ se usa no solo para cd en algún lugar o para ejecutar script
------------Respuesta------------
Cuando usas cd, significa específicamente que deseas cambiar el directoriopor lo tanto, el sistema operativo buscará en los elementos secundarios del directorio actual.
Al ejecutar un programa, './' aclara que es un programa y no un comando.