34 votos

¿Añadir un nuevo ejecutable a la variable de entorno PATH?

Estoy tratando de instalar esta biblioteca llamada phantomjs.

Las instrucciones incluyen esta línea:

http://code.google.com/p/phantomjs/wiki/BuildInstructions

Para mayor comodidad, copie el ejecutable bin/phantomjs.app/Contents/MacOS/phantomjs en algún directorio de su PATH.

¿Cómo lo hago?

0 votos

No creo que tengas que preocuparte por poner eso en tu ruta, ya que la papelera ya está en ella. Pero si quieres, puedes encontrar cómo lograrlo aquí: troubleshooters.com/linux/prepostpath.htm

0 votos

@cksum pero esta es una ruta relativa; no sabemos qué viene antes del "bin".

0 votos

@bneely Sí, pero no hay ~/bin. Las únicas ubicaciones son /bin, /usr/bin y /usr/local/bin. Todas las cuales ya están en tu ruta. Si ejecutas path verá lo siguiente por defecto: PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/b‌​in No he mirado el install script del programa en cuestión, pero sería muy poco probable que se instalara en su propia carpeta 'bin' en algún lugar. Y no se pueden añadir rutas relativas AFAIK. Me inclino a pensar que es una errata de una guía descuidada.

37voto

Gerry Puntos 10709

La forma más limpia de conseguirlo sería hacer un enlace simbólico al binario en el directorio /usr/local/bin (que se incluye en el PATH por defecto). Es posible que tenga que crear este directorio si aún no existe. Puedes comprobar si estos directorios ya están en tu PATH abriendo Terminal.app y escribiendo

echo $PATH

Esto generará una lista delimitada por dos puntos de todos los directorios en su PATH.

Si los directorios /usr/local o /usr/local/bin aún no existen, ejecute lo siguiente:

sudo mkdir -p /usr/local/bin

Enlaza el binario, sustituye (/Applications) por la ruta a phantomjs.app si es diferente:

sudo ln -s /Applications/phantomjs.app/Contents/MacOS/phantomjs /usr/local/bin

Ahora no deberías tener problemas para ejecutar phantomjs desde la línea de comandos.

0 votos

+1, ls /usr/local/bin/ || sudo mkdir /usr/local/bin/ ; sudo ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

22voto

Brian Puntos 48423

Para saber qué hay en su PATH, abra una ventana de Terminal y ejecute este comando: echo $PATH . La salida es una lista de directorios separada por dos puntos, cuyo contenido se puede ejecutar sin especificar la ruta completa.

Como /usr/bin está en mi ruta, puedo ejecutar el w simplemente escribiendo w en lugar de la totalidad de /usr/bin/w .

Además, no es necesario mover el ejecutable a uno de los directorios PATH de la lista. Otras opciones son

  • Deje el ejecutable donde está, y haga un enlace simbólico a él desde uno de los directorios PATH
  • Añade un directorio a tu PATH estableciéndolo explícitamente en un login script para tu shell

0 votos

Por favor, sigue el consejo de @Gerry en la otra respuesta, y enlace simbólico de la misma. Es la forma más limpia.

0 votos

Si, por casualidad, necesita un directorio completo en el PATH para que haya muchos ejecutables a los que necesites acceder, no hay otra opción y eso es lo que el PATH es para. Actualmente utilizamos el ~/.bash_profile para añadir a la ruta .

4voto

Linus Puntos 128

Aunque el enlace simbólico del archivo desde otra dirección funciona, prefiero copiar/mover el archivo a usr/local/bin para no tenerlo "dos veces".

cp bin/phantomjs.app/Contents/MacOS/phantomjs /usr/local/bin

0 votos

Cp hace una copia por lo que ahora tiene el archivo dos veces sin conexión mientras que link sólo tiene un archivo pero en dos lugares

3voto

ShaneMit Puntos 31

Volviendo a root de tu problema, si estás instalando phantomjs puedes usar npm para hacerlo más fácil.

Si lo haces, entonces puedes huir:

npm install -g phantomjs-prebuilt

que instalará el binario dentro del directorio bin adecuado. (la bandera -g indica a npm que el paquete debe ser instalado globalmente)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X