¿Cómo omite "./" cuando ejecuta scripts en el directorio actual

10

En algunos tutoriales a través de Internet, pueden ejecutar un script en el directorio actual sin hacer:

./script

¿Cómo omites esto? Estoy usando CentOS 5.6 x64. Quiero correrlo de esta manera

script

Aivan Monceller
fuente
3
Tenga en cuenta que esto es casi siempre una mala idea, especialmente para el usuario root.
David Schwartz
1
¿Cuál es el propósito / historia detrás del ./ de todos modos?
Pete
Tengo curiosidad por saber por qué siempre necesita tenerla ./
Aivan Monceller
El último comentario podría ser una pregunta separada en mi humilde opinión: ¡es algo importante de entender sobre la ejecución de programas en general!
rozcietrzewiacz
44
@Pete (y Aivan): en Linux / UNIX, el shell solo ejecuta programas si conoce la ruta a ellos (ya sea utilizando una ruta que especifique o buscando la variable PATH). No supone que desee buscar en el directorio actual como lo hace Windows. Busca exactamente lo que le pides que busque a través de la variable PATH. '.' es una referencia al directorio actual. Entonces, cuando escribe './script.sh', le está diciendo la ruta.
Kasius

Respuestas:

26

Cualquiera de:

  1. Agregue el directorio de trabajo actual a su RUTA: PATH=${PATH}:.(esto se considera un riesgo de seguridad)
  2. Agregue explícitamente la ruta que contiene su script a la variable PATH (esto no es un riesgo de seguridad si el acceso de escritura a ese directorio es limitado)
  3. Coloque su script en el lugar apropiado donde PATH ya apunta a (~ / bin, / usr / local / bin, ...)

La última opción es posiblemente la mejor.

Nils
fuente