6 votos

¿Cómo es mi variable $PATH construido en Mountain Lion?

Recientemente he instalado el Homebrew en mi Mac y se quejaba de que /usr/bin ocurre antes de /usr/local/bin mi $PATH variable, lo que significa que el sistema proporciona programas se utiliza en lugar de las que se instalan con el Homebrew.

Mi .bashrc está configurado en un conjunto de archivos independientes, como por este screencast. Esto significa que ~/.bash_profile tiene este aspecto:

if [ -f ~/.bashrc ];
then
  source ~/.bashrc
fi

~/.bashrc tiene este aspecto:

source ~/bin/dotfiles/bashrc

y ~/bin/dotfiles/bashrc tiene este aspecto:

. ~/bin/dotfiles/bash/env
. ~/bin/dotfiles/bash/config
. ~/bin/dotfiles/bash/aliases

~/bin/dotfiles/bash/env, que es donde yo pongo mis $PATH variable, se parece a esto:

export EDITOR="kom"
export PATH=some/path/at/start:usr/local/bin:/Users/jim/pear/bin:~/bin:/Users/jim/.gem/ruby/1.8/bin:/Users/jim/bin/bashscripts:some/path/at/end:$PATH

He añadido some/path/at/start y some/path/at/end para fines de depuración, ya que cuando trato echo $PATH me sale esto:

/opt/local/bin:/opt/local/sbin:/Users/jim/bin:/opt/local/bin:/opt/local/sbin:some/path/at/start:usr/local/bin:/Users/jim/pear/bin:/Users/jim/bin:/Users/jim/.gem/ruby/1.8/bin:/Users/jim/bin/bashscripts:some/path/at/end:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Es decir, hay un montón de otras cosas que se carga en la variable $PATH que no puedo controlar, en la configuración que he descrito anteriormente. Alguna idea de donde este material es cargado, así que puedo ir a cambiarlo y moviendo /usr/local/bin antes /usr/bin?

4voto

Jax Puntos 23

La INVOCACIÓN de la sección de la página man de bash dice

Cuando bash se invoca como un proceso interactivo shell de inicio de sesión, o como un no-shell interactivo con la opción --opción de inicio de sesión, primero lee y ejecuta los comandos desde el archivo /etc/profile, si ese archivo existe. Después de la lectura ese archivo, busca en ~/.bash_profile, ~/.bash_login, y ~/.de perfil, en ese orden, y lee y ejecuta órdenes desde el primero, que existe y es legible.

De particular interés es /etc/profile, que utiliza path_helper para crear un trazado de lo que se encuentra en /etc/paths y /etc/paths.d/*.

3voto

Si corrige la errata en la RUTA de acceso y asignación de reemplazar usr/local/bin con /usr/local/bin Homebrew deberían dejar de quejarse.

Las otras cosas (/opt/local/...) es definitivamente añadido en algún lugar más adelante, durante el shell de inicialización (es decir, después source ~/.bashrc o después de la . ~/bin/dotfiles/bash/env). Usted tendrá que buscar a través de los diferentes archivos (o grep para /opt/local o PATH.*PATH) para ver donde ocurre (y por qué).

1voto

Preet Sangha Puntos 39414

Hay también de todo el sistema en bashrc que se encuentra en /etc/bashrc, y un par de otros.

De man bash:-

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

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