Cómo reparar el Terminal que no carga ~ / .bashrc en OS X Lion [cerrado]


176

Cada vez que abro una nueva pestaña en Terminal usando Cmd+ T, se abre bash en el mismo directorio que la pestaña anterior. Esto funciona bien cuando estoy en el ~directorio, pero si estoy en otro lugar, aparece un error al cargar.bashrc

Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$ 

Parece que .bashrcse carga a través de una ruta relativa y no absoluta, porque si lo hago source ~/.bashrc, todo funciona sin problemas.

bashrc cargado

Creo que este es un problema relacionado con OS X Lion, porque antes de la actualización de Snow Leopard, no tenía el mismo problema. Pero eso podría deberse a que la Terminal siempre se abre en ~, no recuerdo si intentó abrir el mismo directorio.

Sin embargo, la pregunta sigue siendo la misma, ¿cómo puedo hacer que la Terminal cargue a ~/.bashrctravés de una ruta absoluta y no relativa?


1
esta pregunta debe trasladarse a apple.SE (si es posible), no cerrada.
— Sparr

@Sparr Estoy totalmente de acuerdo contigo, pero los moderadores solo están moviendo las preguntas más nuevas, no las más antiguas. Véase la discusión aquí
— рüффп

Respuestas:


357

Terminal abre un shell de inicio de sesión. Esto significa, ~/.bash_profilese ejecutará, ~/.bashrcno.

La solución en la mayoría de los sistemas es "requerir" el ~/.bashrcen el ~/.bash_profile: simplemente ponga este fragmento en su ~/.bash_profile:

[[ -s ~/.bashrc ]] && source ~/.bashrc

8
¿Alguien podría explicar lo que [[ -s /file/path ]]está haciendo? Tratar de buscar una explicación en Google no es demasiado fácil.
— Shane

18
De man bash: -s archivo Verdadero si el archivo existe y tiene un tamaño mayor que cero.
— ckruse

1
"Terminal abre un shell de inicio de sesión": ¿cuáles son los otros tipos de shells os? ¿Dónde puedo encontrar más documentación al respecto?
— dknight

44
Existen los llamados "shells interactivos" y "shells de inicio de sesión". Su manual de bash ( man bash) habla sobre él y lo explica, capítulo INVOCACIÓN (solo busque INVOCATIONdespués de llamar man bashescribiendo /INVOCATION)
— ckruse

3
No veo cómo una pregunta relacionada con una situación de ejecución de código, resuelta por una línea de código, está "fuera de tema" en un sitio de preguntas de programación.
— Kheldar

26

Cambiar el nombre .bashrca .profile(o unir suavemente el último al primero) también debería ser el truco. Ver aquí .


O podría vincularlos: tenga en cd && ln -s ./.bashrc ./.profilecuenta que los enlaces simbólicos son sensibles con respecto a la ruta del archivo, creo que usar la sintaxis anterior funciona, pero para asegurarse de que puede usar rutas absolutas en cualquier caso.
— Steve Benner

1
¿UH no? Estos archivos tienen diferentes propósitos. Si tiene la sintaxis de Bash .profile, romperá regularmente sh.
— tripleee

14

Tengo lo siguiente en mi ~/.bash_profile:

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

Si tuviera en .bashrclugar de ~/.bashrc, estaría viendo el mismo síntoma que estás viendo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.