¿Cómo evito que $ PATH se reinicie cada vez?

2

Estoy teniendo dificultades para configurar el PATH en mi macbook pro.

Seguí esto enlazar para modificar mi variable de ruta.

Cada vez que comienzo una nueva terminal, obtengo un PATH apuntando hacia

/Applications/eclipse/apache-maven-3.0.5/bin

A pesar de .bash_profile es como sigue

EXPORT PATH=/usr/bin:$PATH
export PATH=/usr/local/bin:$PATH
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Y /etc/paths tiene el siguiente contenido

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/Applications/eclipse/apache-maven-3.0.5/bin

Traté de mirar esto enlazar también, pero tampoco ayudó mucho

seeker
fuente
2
No estoy seguro de por qué su bashrc exporta PATH tres veces, pero un problema secundario que tiene es que la tercera exportación hace que los dos primeros sean inútiles; incluye los dos directorios que agregan, y se olvida de tener el :$PATH, eliminando los contenidos anteriores.
demure
¿Podría sugerirme cómo debo modificar los archivos para corregir el problema? N00b aquí.
seeker
Puedes editarlo con el editor que elijas. vim, emacs, etc. O, como estás en Mac, si quieres un editor de GUI: open -a TextEdit ~/.bashrc
demure
Y que contenido pongo en bashrc? No creo que tenga ese archivo a partir de ahora ..
seeker

Respuestas:

3

Parece que tu concha es sh. OS X's / bin / sh es una versión de bash donde la diferencia principal es que el modo POSIX está habilitado de forma predeterminada. Tampoco lee ~ / .bash_profile para shells de inicio de sesión. Desde man bash:

Si se invoca a bash con el nombre sh, trata de imitar el comportamiento de inicio de las versiones históricas de sh lo más cerca posible, a la vez que se ajusta al estándar POSIX. Cuando se invoca como un shell de inicio de sesión interactivo, o un shell no interactivo con la opción --login, primero intenta leer y ejecutar comandos de / etc / profile y ~ / .profile, en ese orden.

Así que puedes usar ~ / .profile en lugar de ~ / .bash_profile, pero probablemente solo quieras cambiar el shell a un bash normal:

  • Establecer inicio & gt; "Shells se abren con" a "Shell de inicio de sesión predeterminado" si está configurado a otra cosa
  • correr chsh -s /bin/bash si se cambió el shell de inicio de sesión predeterminado

Notas sobre el hilo de comentarios en la respuesta de David X:

  • Symlinking / bin / bash to / bin / sh no ayudaría. Los archivos binarios / bin / bash y / bin / sh son casi idénticos, pero el comportamiento depende del nombre con el que se invocó bash.
  • Terminal e iTerm abren nuevos shells como shells de inicio de sesión de manera predeterminada, por ejemplo, bash lee ~ / .bash_profile pero no ~ / .bashrc.
  • Las cuentas de usuario normales no están incluidas en / etc / passwd en OS X.
Lri
fuente
Esto suena bastante bien, +1.
David X
¡Funciona genial! :)
seeker
1

Estoy bastante seguro de que PATH debe configurarse en .bashrc en lugar de. * Profile.
Intente poner esto en su .bash_profile (reemplazando el export PATH líneas):

if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi

y esto en tu .bashrc:

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
David X
fuente
¿Los has mezclado los dos?
seeker
¿Querías decir que el primer fragmento de código entra? .bashrc (que no tengo en este momento) y la segunda en .bash_profile ?
seeker
.bash_profile se ejecuta cuando bash se inicia como un shell de inicio de sesión. (Probablemente no lo haga, pero es una buena idea asegurarse de que funcione de todos modos). .bashrc se ejecuta cuando bash se inicia como un shell sin inicio de sesión, por ejemplo, cuando inicia un emulador de terminal GUI (también conocido como xterm).
David X
@KodeSeeker, no entra el primer fragmento .bash_profile y el segundo entra .bashrc. Lo editaré para aclararlo más.
David X
Lamentablemente no funciona. Aquí están los contenidos de mi .bashrc - pastebin.com/jiQ9i5q0 y mi .bash_profile - pastebin.com/jPu1DfYm
seeker
0

solo tiene una entrada allí ... la tercera sobre escribe todo ...

export PATH=.:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:$PATH
n13
fuente
No funciona . Todavía tengo sudo Comando no encontrado cuando inicio una nueva terminal
seeker
3
Es una mala idea poner . en tu RUTA, y es un De Verdad Mala idea ponerlo al inicio. Al hacerlo, permite cualquier directorio con un archivo ejecutable llamado sudo para tomar el control de su computadora (por ejemplo, el archivo que acaba de descargar). También causa problemas menos graves con otros comandos que no esperan escribir su contraseña.
David X
@KodeSeeker, caso en cuestión.
David X