2009-11-11 18:48:39 +0000 2009-11-11 18:48:39 +0000
141
141

¿Dónde se fija $PATH en OS X 10.6 Snow Leopard?

Escribo echo $PATH en la línea de comandos y obtengo

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

Me pregunto dónde se está instalando esto ya que mi archivo .bash_login está vacío.

Me preocupa especialmente que, después de instalar MacPorts, se haya instalado un montón de basura en /opt. No creo que ese directorio exista en una instalación normal de Mac OS X.

Actualización: Gracias a jtimberman por corregir mi declaración de echo $PATH

Respuestas (7)

161
161
161
2009-11-11 20:57:32 +0000

Cuando bash se inicia, lee los siguientes archivos cada vez que se conecta. Para los propósitos de OS X, esto significa cada vez que abres una nueva ventana de Terminal.

/etc/profile
~/.bash_profile
~/.bash_login (if .bash_profile does not exist)
~/.profile (if .bash_login does not exist)

Cuando se inicia un nuevo shell escribiendo bash en la línea de comandos, lee .bashrc

OS X también utiliza ~/.MacOSX/environment.plist para establecer más variables de entorno, incluyendo rutas si es necesario.

Finalmente, /etc/paths y /etc/paths.d también son leídos por el shell.

  • *

/opt/local/bin etc. son añadidos en ~/.tcshrc por MacPorts. También asegúrese de buscar en ~/.cshrc.

25
25
25
2011-03-25 18:07:37 +0000

En serio, Leopard nos ha dado una nueva forma de añadir rutas. Sólo tienes que crear un archivo que contenga la parte de la ruta que quieres añadir, y ponerlo en /etc/paths.d

Un ejemplo rápido de cómo hacer esto en un paso es

echo "/some/path/to/add" >> /etc/paths.d/somefilename

Si no, puede ir a /etc/paths.d y poner el archivo allí directamente. De cualquier manera, cualquier parte de la ruta en los archivos de ese directorio se añadirá a la ruta por defecto.

Esto también funciona para manpath.

Aquí hay un enlace con más detalles: ars technica: ¿cómo añado algo a PATH en snow leopard?

En una segunda nota: MacPorts pone todo en el directorio opt precisamente porque no es utilizado por las cosas de Apple. Así no habrá conflicto. Su guía (excelentemente escrita, por cierto) tiene una explicación de por qué usa opt y cómo cambiar ese valor por defecto si quieres. Guía MacPorts

4
4
4
2009-11-11 19:07:28 +0000

Para mostrar su ruta, haga eco de $PATH.

echo $PATH

Para establecer su ruta, edite ~/.bash_profile, no ~/.bash_login.

3
3
3
2012-02-07 19:36:18 +0000

También está la ruta determinada por ssh.

Compara echo $PATH con ssh localhost 'echo $PATH'. Como ssh no lee /etc/profile, /usr/libexec/path_helper no se ejecuta y por lo tanto /etc/paths se salta. Ahora prueba con ssh localhost 'source /etc/profile; echo $PATH'. Las rutas deberían estar más cerca. Las diferencias restantes probablemente se deban a la modificación de la ruta en su .bash_profile (que también es omitido por ssh) y .bashrc (que es leído por ssh).

Si quiere que su ruta de acceso a ssh sea similar a la de su terminal normal, puede añadir source /etc/profile a su .bashrc.

2
2
2
2013-06-01 09:50:21 +0000

Se puede definir en cualquiera de los dos:

  • Variables de sistema - /etc/paths
  • Variables de usuario - ver la explicación de @Steve Folly
1
1
1
2009-11-11 19:13:39 +0000

En realidad se almacena en su archivo .profile en lugar de .bash_login y es común que MacPorts lo utilice en lugar del archivo .bash_login.

También El directorio /opt es usualmente creado por MacPorts y almacena sus archivos en esta carpeta.

1
1
1
2012-06-26 01:40:17 +0000

En cuanto a docs para la utilidad /usr/libexec/path_helper, los componentes iniciales para $PATH fueron tomados de /etc/paths y por defecto se ve como

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

para OS-X Snow Leopard