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?

Jakub Arnold
fuente
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
ckruse
fuente
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í .

scorpiodawg
fuente
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.

Keith Thompson
fuente