Normalmente, cuando vas a usar una herramienta o utilidad en Linux lo haces mediante su comando correspondiente. Para Git, todo comando inicia con la instrucción git
; para instalar software en distros basadas en Debian se usa apt-get
; si quieres correr un script en Ruby usas ruby archivo.rb
o en NodeJS node archivo.js
.
Hay otras utilidades que se ejecutan desde una ruta dada, por ejemplo wkhtmltopdf que se ejecuta desde /usr/local/bin/wkhtmltopdf
. Sin embargo, hay una notación la cual vengo a intentar explicar hoy y se trata de la notación ./ (punto diagonal-slash).
Bueno, siempre al rescate nuestro fiel amigo StackOverflow donde encuentro la pregunta y una respuesta adecuada para las veces que se usa esta notación.
La razón viene dada ya que en sistemas basados en Unix, por norma, el directorio actual no se encuentra en la variable de entorno $PATH. Cuando ejecutas un script sin especificar su directorio de origen (ruby archivo.rb
) el shell de sistema hará una búsqueda en los directorios especificados en la variable PATH hasta hallarlo o arrojar algún error.
En el caso contrario, si usas la notación ruby ./archivo.rb
le estarás diciendo al shell donde exactamente está ubicado el archivo, le ahorras la búsqueda en todo el sistema y una que otra incomodidad.
Como lo pone una de las respuestas en la pregunta:
The ./ says ‘look in the current directory for my script rather than looking at all the directories specified in $PATH’.
Usar ./ dice “busca el script en el directorio actual en vez de ir a buscar en todos los directorios que aparecen en $PATH
En ocasiones llamar algunos scripts sin especificar el directorio actual puede funcionar aunque es mejor idea hacerlo mediante la notación ./
Bueno, siempre había ejecutado scripts con ./ pero nunca me detuve a ver ¿Por qué?.. Saludos!
Yo también en ocasiones lo hacía sin detenerme a preguntar el por qué, hasta que se me dio por averiguar.