¿Cuál es el significado de ./ antes de un camino dado?


25

Me han dicho que ejecute esto:

./yiic message ./app/messages/config.php

Pero no entiendo el ./significado, ¿alguien puede aclarar por favor?

Nota: Créeme, no podemos googlear eso. He intentado:

./ significado ./ ubuntu

Era lo mismo que nada. :(


3
En estos casos, lo mejor es buscar "dot slash", que dio este resultado muy útil: linfo.org/dot_slash.html
heltonbiker

Respuestas:


29

./o simplemente .es la abreviatura de Unix para el directorio actual.

Debe especificarlo cuando el directorio actual no está en su RUTA. La RUTA es la lista de carpetas buscadas cuando ejecuta un programa. (Puede determinarlo escribiendo echo $PATH). Si un archivo ejecutable no está en su RUTA, para ejecutarlo debe especificar la carpeta en la que se encuentra. Puede hacerlo dando la ruta completa al archivo, pero si el archivo está en el directorio actual, puede usar ./como taquigrafía.

Del mismo modo, ../o simplemente ..es una forma abreviada para el directorio sobre el actual.


17
Alguien debería incluir en su respuesta por qué $ PATH no contiene .. Es porque usar automáticamente el directorio actual es un agujero de seguridad. Imagine que alguien más crea un programa, lo nombra a lsusted y a usted cden su directorio, luego escribals
Zan Lynx el

1
@Zan Siempre me he preguntado esto, gracias por tu respuesta a la pregunta que nadie hizo, pero alguien debería haberlo hecho.
crasic

Gran comentario / adición de @ZanLynx, debe editarse en la respuesta ya que los comentarios pueden perderse.
NSGaga

15

Cada directorio en la línea de comando tiene dos "directorios especiales" llamados .y ... Estos son abreviaturas para, respectivamente, el directorio actual y el directorio que contiene el directorio actual.

Entonces, por ejemplo, cd ./more/directory/namessolo significa "comenzar en el directorio actual y continuar en la ruta". Del mismo modo, el comando cd ..significa "cambiar un directorio hacia arriba.

Si desea el nombre de su directorio actual, puede usar el pwdcomando. Además, si usa la -abandera para ls, puede ver estos dos directorios especiales. Es decir, ls -agenerará una lista que comienza con .y ...


excelente adición root45 +1 :)
Rinzwind

4

Otros ya han explicado qué .y qué ..significa (directorio actual y el directorio padre respectivamente). Esto se aplica a todos los nombres de ruta.

Cuando abre una terminal, generalmente comienza en su directorio de inicio: ~(que se expande a /home/username). Las siguientes rutas son todas equivalentes, siempre que su directorio de trabajo actual sea /home/username:

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username(el directorio padre de /todavía está /)
  • ./././././. (el directorio actual en el directorio actual en el ...)
  • ./ (se permiten barras diagonales finales para los directorios)
  • /home////username/// (y también lo son las barras múltiples)

No , no confundir ./programcon . program. ./programejecuta un archivo en el directorio actual con el conjunto de bits de ejecución. . ./programes una cosa bash y, alternativamente, se puede escribir como source ./programque lee los comandos bash del programarchivo en el directorio actual y los ejecuta en el shell actual.

Si se pregunta por qué solo puede ejecutar en geditlugar de /usr/bin/gedity no en programlugar de ./programo /home/username/program, consulte la pregunta relacionada:


3

Significa comenzar desde el current directory path.

Asumamos que tienes algo pathcomo esto:

/usr/ /usr/bin/ /usr/local/bin

y dentro /usr/bin/hay un ejecutable llamado yiic.

Si lo emite yiic, comenzaría el de adentro /usr/bin/.

Al emitir, ./yiicle dice al sistema que busque dentro del directorio actual este ejecutable.


Ok ... pero aún no entiendo. Digamos que tengo yiic adentro /home/mysuser/y que navego allí usando cd /home/myuser. Una vez dentro, creí que hacer solo yiic, debería funcionar porque llamé mientras estaba en ese directorio. Pero él dice comando no archivo. Si hago lo mismo y uso el ./ entonces, se ejecuta correctamente ... ¿Pueden aclarar un poco más?
MEM

@frabjous como respondió este comentario también.
MEM

No! siempre se verá en la directiva PATH a menos que le indique que use el directorio actual (usando ./). Mire la respuesta del usuario45: .es un archivo especial dentro de una carpeta que puede ver al hacer un ls -laen el directorio;)
Rinzwind
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.