¿Cuál es la diferencia entre filename y ./filename en Linux


Respuestas:


18

Para los archivos de datos, no hay diferencia: ambas declaraciones harán referencia al archivo de datos en su directorio actual. (Por ejemplo, cat filenamey cat ./filenameson semánticamente idénticos).

Es una historia diferente si el nombre de archivo en cuestión se refiere a un ejecutable , es decir, es lo primero (o incluso lo único) que escribe en la línea de comando. ./filenamebuscará el ejecutable en su directorio actual y en ningún otro lugar. filename, por otro lado, evaluará la variable de entorno PATHy buscará filenameen cada directorio almacenado allí (que podría incluir o no su directorio actual).

./filename(o cualquier otro /path/to/filename) se prefiere cuando se desea ejecutar un ejecutable específico , no el primero que se encuentra en su RUTA.


6

Si está ejecutando un programa, filenamedice que ejecute el primero que se encuentra en su $PATHy el segundo dice que ejecute el que está en el directorio actual.

Si está usando ese nombre de archivo como argumento para un programa como en do_something filenameo do_something ./filenamesignifican lo mismo.


5

Te refieres a la ejecución de comandos, ¿verdad?

Hay una variable de entorno PATHque contiene algunos directorios del sistema, delimitados por punto y coma. Cuando escribe, commandel sistema busca en estos directorios en el orden en que están especificados para buscar un archivo ejecutable llamado <comando>. Si lo encuentra, intenta ejecutarlo. Puedes ver tu RUTA a través echo $PATHde bash. Por ejemplo:

$ echo $ PATH
/ sbin: / bin: / usr / sbin: / usr / bin: / usr / games: / usr / local / sbin: / usr / local / bin: / home / ivanatora / bin: / usr / local / kde4 / bin: / usr / local / kde4 / bin

Cuando escribe ./filenameestá especificando la ruta exacta: el directorio actual. Puede ver que el directorio actual rara vez está en su $ PATH (por razones de seguridad). Entonces, si desea ejecutar un archivo desde el directorio actual, lo usa ./filename.

Para ejecutar un archivo por su ruta (especialmente si no está en $ PATH) también puede escribir <path>/file, como:

/ sbin / ifconfig



1

Depende de qué circunstancias lo estés usando.

Como argumento, por ejemplo, "nombre de archivo del programa", entonces depende del programa, pero generalmente son idénticos.

Como nombre de programa, por ejemplo, "argumentos de nombre de archivo", luego "argumentos de nombre de archivo" buscará PATH para encontrar el binario, mientras que "argumentos de nombre de archivo" utilizará el programa en el directorio actual. Esto es obviamente útil si. no está en la RUTA, pero también es útil usar esta, incluso si. está en la ruta, quizás porque coincide con una entrada anterior.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.