ubuntu - línea de comando - ¿Cómo saber cuándo usar ./ ​​o no?

CorePress2023-09-17  1

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;

  1. 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í.

  2. Cuando usas cd ./folder_name dice, muéveme a la carpeta con el nombre nombre_carpeta en el directorio actual (.).

  3. 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.

  4. 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


  • Entonces cd nombre_carpeta y cd ./nombre_carpeta son iguales, ¿verdad? -AJJ 21 de septiembre de 2017 a las 13:52
  • ¡Sí, son lo mismo!- George Udosen 21 de septiembre de 2017 a las 13:54
  • 1 Muy buena respuesta. Otra cosa que agregaría es que cuando se usa globstar para manejar archivos se debe usar ./ ​​bporque 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 así en ls, por lo que obtendrá un error. Con ls ./* funcionará sin problemas. Entonces, ./ se usa no solo para cd en algún lugar o para ejecutar scripts. - Sergiy Kolodyazhnyy 21 de septiembre de 2017 a las 16:24


------------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.