2012-03-23 10 views
34

He estado buscando en todo el sistema pero no puedo encontrarlo. Cuando echo echo $ PATH obtengo las cosas que agregué, más la ruta predeterminada. No tengo un .profile, y tengo un .bashrc, pero la ruta predeterminada no está ahí. Lo busco solo para saber dónde está ubicado porque todos los tutoriales explican que está en .profile ... pero ¿y si no tienes uno? ¿Dónde está ubicado entonces? ¿Alguien tiene ideas?

Respuesta

65

Si lo hace sudo man path_helper, habla un poco sobre cómo unir el camino. Puede mirar en /etc/paths y /etc/paths.d. Lo hice, y encontré lo que estaba buscando.

+0

Ohh, muchas gracias por eso. – Andy

+0

Claro. Fue un poco doloroso encontrar :). – beOn

+0

¡Gracias de un acechador! Esto fue realmente frustrante para mí. – user18197

10

Muchos ajustes de todo el sistema, incluidos PATH, se configuran en /etc/profile, que se lee en bash al inicio. En Mac OS X, este archivo generalmente usa path_helper para establecer PATH. Esta utilidad a su vez lee la información de otros archivos de configuración del sistema en /etc (ver path_helper manpage).

Tenga en cuenta que incluso si deshabilita la lectura de los archivos de inicialización por bash (por ejemplo, con opciones de línea de comandos como --noprofile), seguirá heredando el entorno del proceso principal.

+0

Solo obtengo expresiones regulares. Estoy buscando cosas como/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin Pero no lo hago tener el .profile con eso, y no está en mi .bashrc, pero sé que existe porque puedo repetirlo desde $ PATH – Andy

+0

Veo lo que dices. – Andy

6

Si se inicia en/etc/profile, debe ser algo como esto:

if [ -x /usr/libexec/path_helper ]; then 
    eval `/usr/libexec/path_helper -s` 
fi 

Es la prueba para ver si el archivo existe y si es así, lo ejecuta. Si se ejecuta a mano, obtendrá algo como esto:

PATH="/usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin"; export PATH; 

Creo que es lo que estás buscando. Por lo tanto, proviene de/etc/profile, que a su vez llama a un ejecutable que establece la ruta.

+0

Entiendo eso, y miré lo que Adam señaló, pero para que eso suceda, necesita obtener la información de algún lado. ¿Las expresiones dentro de path_helper realmente generan/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin? – Andy

+2

De hecho, es de donde provienen las rutas (a través de '/ etc/profile' y'/etc/csh.login' dependiendo de si su shell es sh/bash o csh/tcsh). Sin embargo, observe el código dentro del script para obtener el resto de la respuesta: mira '/ etc/paths' y'/etc/paths.d/* '(todos los cuales deben ser archivos, con una línea por entrada de ruta para incluir). – torek

+0

No entiendo lo que quiere decir con las "expresiones". El path_helper es un ejecutable binario. Se está convocando como parte de un comando de shell utilizando los backticks (línea 2) que genera el helper de ruta que se genera. La parte eval de la línea indica que la salida de path_helper debe ejecutarse como parte del shell. Tenga en cuenta que la última parte de esto es export PATH ;, que coloca los resultados en el shell de su entorno. –

Cuestiones relacionadas