11 votos

Establece la variable PATH para que se detecta en todas las aplicaciones, incluso fuera de la terminal. (El capitán)

Mi ~/etc/path ve de la siguiente manera:

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

El Problema:

Cuando yo escriba echo $PATH a la terminal, me pongo de nuevo:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Y esto persiste por cada aplicación que se inició en el terminal. Por ejemplo, si escribo emacs, y, a continuación, hacer:

M-x getenv PATH

Mi resultado es:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Sin embargo, si yo inicio de emacs uso de launchpad en lugar de la terminal y volver a entrar en M-x getenv PATH, el resultado es que en lugar /usr/bin:/bin:/usr/sbin:/sbin.

Como usted puede ver mi cambio a ~/etc/path, que fue la adición de /usr/local/bin, está ausente.

Otro Ejemplo:

Yo uso un plugin de Firefox llamado vimperator que emula vim funcionalidad en Firefox. Tiene una característica que permite al usuario editar la página web de entrada en vim. Sin embargo, esto no parece funcionar en OS X. En una corazonada me escriba el comando !echo $PATH en vimperator y consulte los siguientes: /usr/bin:/bin:/usr/sbin:/sbin. Por supuesto, ya que el enlace simbólico llamado gvim, lo que apunta a macvim, fue creado y colocado en /usr/local/bin por la cerveza, este comportamiento tiene sentido. Lo que yo no entiendo es por qué la PATH es leer de la manera que es.

Las soluciones que he intentado:

  • He obviamente reiniciar mi máquina.

EDITAR (Según lo solicitado por borrar el comentario):

el uso de sysctl user.cs_path en el terminal trae:

user.cs_path: /usr/bin:/bin:/usr/sbin:/sbin

10voto

Michael Zhou Puntos 167

El loginwindow proceso establece un entorno de usuario. Establece las variables TMPDIR y la RUTA de acceso, consulta a los Servicios de Directorio y conjuntos de SHELL de USUARIO de INICIO LOGNAME . Se establece la RUTA a /usr/bin:/bin:/usr/sbin:/sbin a menos que sea modificado por launchd (en las versiones más actuales de OS X). Este es el CAMINO de la variable disponible para la los procesos del usuario a menos que sea modificado por ese proceso en particular (cron como un ejemplo, se establece la RUTA de acceso a /bin:/usr/bin).

Emulador de Terminal aplicaciones de iniciar el shell como un shell de inicio de sesión por lo tanto el CAMINO es modificada por la lectura de los diversos shell de inicio de archivo. Cualquier proceso iniciado por el shell ahora hereda la nueva variable PATH. Otras aplicaciones usando un shell no leer cualquier shell archivos de configuración y uso de esas variables de entorno disponibles en el entorno actual. Una aplicación puede modificar el medio ambiente mediante el uso de la LSEnvironment clave en su Info.plist.

Como de Yosemite, puede cambiar la variable de RUTA de acceso en el siguiente formulario.

sudo launchctl config user path <path>

en el caso de que quieras /usr/local/bin en el frente de la ruta.

sudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

reboot de su sistema y de la nueva RUTA será establecido por loginwindow.

-1voto

Michael Tunnell Puntos 909

Ejecutar esto:

launchctl setenv PATH "$PATH"

EDIT: Que ya no funciona. El uso de este con Bash en su lugar:

CURRENT="$(/usr/libexec/PlistBuddy -c "Print PATH" ~/.MacOSX/environment.plist)"
/usr/libexec/PlistBuddy -c "Set PATH $CURRENT:/your/path/here:/another/path/maybe" ~/.MacOSX/environment.plist

A continuación, cerrar la sesión y volver a iniciar sesión.

Nota: es posible Que desee reemplazar $CURRENT:/your/path/here:/another/path/maybe con sólo una lista de rutas de acceso como :/your/path/here:/another/path/maybe, pero que es una mala idea becase va a borrar todas las rutas que ya están almacenados.

Este utiliza Sesión de Usuario Variables de Entorno.

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