¿Por qué necesito ./ para que los comandos se ejecuten en Mountain Lion?

¿Por qué necesito ./ para que los comandos se ejecuten en Mountain Lion?

Posible duplicado:
¿Qué representa “/”, “./”, “../” al indicar la ruta?

¿Por qué necesito ./que se ejecuten comandos en Mountain Lion?

Por ejemplo, cuando uso mysql tengo que escribir en la terminal:

./mysql -u itsme -p

Además, estoy creando aplicaciones de línea de comandos y hago que mis archivos sean ejecutables y tengo que ejecutar el comando con ./, así...

./myawesomeapp dothis

./que significa directorio actual, pero ¿cómo puedo ejecutar comandos sin tener que usarlos?

Respuesta1

Si coloca el directorio con sus binarios en su PATHvariable de entorno, puede llamarlos sin proporcionar la ruta (es decir, el ./)

Supongo que probablemente estés usando bash como shell (puedes comprobarlo ejecutando echo $SHELL). Si ese es el caso, agregue lo siguiente a su.bashrc

export PATH=$PATH:/whatever/path/you/want/to/add

Respuesta2

Debe instalar el archivo ejecutable en uno de los directorios enumerados en la variable de entorno $PATH.

echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Ajústelo $PATHmodificando su ~/.profilearchivo.

export PATH=$PATH:/Users/me/bin

Es posible prescindir de ./siempre agregando .a $PATH, pero eso podría ser un problema de seguridad: si no está en su máquina personal, entonces si conserva el mal hábito mientras opera un servidor.

Respuesta3

Si bien es posible agregar .a su variable $PATH, se recomienda encarecidamente NO hacerlo. Si camina hasta algún lugar aleatorio en el sistema de archivos y escribe algo que cree que ejecutará un programa ( ,,,, vietc. ) , un archivo en el directorio local se convertirá en candidato para ejecutar. Si no tiene suerte, ese NO es el programa que quería ejecutar en absoluto, y si lo está ejecutando como , es aún peor, porque alguien podría agregar un archivo local que haga algo completamente diferente a lo real (además de hacer ls reales, por supuesto). Por supuesto, de lo contrario sería obvio que no es ls real y el usuario comenzaría a investigar la situación). [1]emacslspsrootlsls

En su lugar, debe agregar una ruta absoluta al lugar donde tiene sus archivos ejecutables, por ejemplo /projects/mycurrentprojects/bin, o "relativa al inicio", por ejemplo ~/bin, si desea que la ruta funcione en TODAS las circunstancias, es mejor usarla home\mats\bin[obviamente, usando el nombre de usuario correcto para usted] . De esa manera, sólo son aplicables los archivos de un determinado conjunto de directorios y, sin importar dónde se encuentre, sólo los programas que se encuentran en esos directorios específicos se eligen como "posibles candidatos para ejecutar".

[1] Sí, me doy cuenta de que el orden de búsqueda y varios otros factores también importarán aquí. Pero generalmente no es una buena idea agregar el "directorio actual", sin importar las objeciones.

información relacionada