.bashrc no se obtiene en iTerm + Mac OS X

62

Estoy usando iTerm en Mac OS X 10.6. Parece que cuando abro iTerm, .bashrcni .bash_profilese obtiene. Puedo decir porque los alias definidos en .bashrcno están establecidos. ¿Como arreglar?

Computista
fuente
2
Lo que sucede es ~/.bash_profileque bash lo invoca primero, lo que es un cortocircuito en las instrucciones que tiene ~/.bashrc. Este problema puede ocurrir inesperadamente si un programa no autorizado agrega algunas instrucciones a usted ~/.bash_profilecuando anteriormente el archivo no existía, y usted había colocado todos sus comandos bash ~/.bashrc. La solución es eliminar su ~ / .bash_profile, o hacer que ~ / .bash_profile obtenga su ~ / .bashrc. Esto se puede realizar agregando el comando: source ~/.bashrcal final de su ~/.bash_profiley reiniciando el terminal.
Eric Leschinski

Respuestas:

53

Bash obtendrá CUALQUIERA .bash_profile o .bashrc, dependiendo de cómo se llame. Si se trata de un shell de inicio de sesión, Bash busca ~ / .bash_profile, ~ / .bash_login o ~ / .profile, en ese orden, y obtiene el primero que encuentre (y solo ese). Si no es un shell de inicio de sesión pero es interactivo (como la mayoría de las sesiones de terminal), Bash obtendrá ~ / .bashrc.

Probablemente, iTerm está buscando ~ / .bashrc. Si está configurado para iniciarse como un shell de inicio de sesión, buscará ~ / .bash_profile. Es casi seguro que es un error dentro del archivo de configuración en lugar de que el shell no lo obtenga.

Pondría una línea al comienzo de cada archivo. En la parte superior de ~ / .bash_profile:

export BASH_CONF="bash_profile"

Y en la parte superior de ~ / .bashrc:

export BASH_CONF="bashrc"

Luego, abra un nuevo iTerm y escriba

$ echo $BASH_CONF

Eso debería confirmar que el archivo se está obteniendo y puede buscar en la sintaxis del archivo.

brillante
fuente
2
Establecimiento de una variable de entorno diferente para cada archivo fuente permite obtener más información, es decir, si se obtiene más de un archivo, usted lo sabrá, nost sólo el último (si no el orden de origen.)
kmarsh
Esto todavía no carga el archivo .bashrc. Tuve que agregar source ~ / .bashrc a mis preferencias de iTerm y Terminal. por cierto estoy usando Mac OS X 10.9.5.
Elk gigante
Acabo de agregar un archivo .profile y eso funciona automáticamente en OS X 10.9.5 sin alterar las preferencias de su terminal.
Elk gigante
1
Descubrí que es un shell de inicio de sesión yendo a preferencias -> perfiles -> general y el shell de inicio de sesión se selecciona bajo comando. Válido en MacOS El Capitan e iTerm2 3.0.14
Aditya
La solución aquí no funcionó para mí, pero encontré una solución. Al principio, no había bashrc ni bash_profile. La respuesta aquí propone crear un bashrc. En lugar de crear un archivo bashrc, creé un bash_profile y funcionó. Ahora necesito entender por qué el bashrc no se ejecutó y el bash_profile sí.
kalmanIsAGameChanger
68

En iTerm2, ninguna de estas soluciones funcionó para mí. Pude conseguir que leyera correctamente mi archivo .bashrc agregando el comando

source ~/.bashrc 

al campo Enviar texto al inicio: en Configuración / General para mi perfil iTerm.

ingrese la descripción de la imagen aquí

Mark Struzinski
fuente
¿Qué sucedió cuando hiciste lo que sugiere la respuesta aceptada? ¿Ninguna salida?
Daniel Beck
Derecha. No obtuve salida, e iTerm 2 acaba de cargar el bash shell predeterminado con ninguno de mis alias.
Mark Struzinski
Esa respuesta estaba rota hasta ahora: se suponía que el segundo fragmento debía entrar ~/.bashrc. Editado
Daniel Beck
Yo uso ZSH y estaba teniendo el mismo problema. Excepto que ninguno de mis archivos de configuración existía en primer lugar y tuvo que ser creado. Utilicé esta respuesta y configuré "Enviar texto al inicio", sin embargo, cuando reinicié ZSH creó su .zsh y sobrescribí mi archivo, pude eliminar el "Enviar texto al inicio" y agregar mis configuraciones al archivo recién generado. No estoy seguro si esto ayuda a alguien
Arnolio
Pensé que este era mi problema ... y luego, en el camino, me di cuenta de que el catálogo de mi casa no era la carpeta en la que comencé ... así que moví mi .bash_profile a otra ubicación y pensé que estaba en ln -s. catálogo de mi ~ (casa), que era, de hecho, la adición de un enlace simbólico en la carpeta equivocada la adición de este aquí en caso de que ayuda a otra persona, que estaba pasando por esta respuesta..
Alisso
23

Me pregunto, ¿realmente usas Bash? Puede ser que pueda usar echo $SHELL, es muy posible que esté usando zsh , ¿ha instalado en-my-zh ?

En realidad, encuentro el mismo problema que usted, lo soluciono configurando ~ / .zshrc en su lugar ~ / .bash_profile para el shell de inicio de sesión o ~ / .bashrc para el shell sin inicio de sesión.

Tal vez puedas intentarlo

AaronChen
fuente
1
Sugerencia interesante, aunque esta pregunta tiene 3 años y tiene una respuesta aceptada.
Tyson
12

En mi máquina 10.6 ~/.profilese obtiene. Entonces, una source .bashrcentrada ~/.profiledebería hacer el trabajo.

sebastiangeiger
fuente
Trabajó para mí en Mac OS El Capitan.
user674669
Mi experiencia dice que no desea obtener un archivo .bashx de otro, están separados por una razón :) Si está haciendo eso, entonces algo está mal
Alexander Mills
@AlexanderMills La razón por la que existen estos archivos es porque Mac los arrancó directamente de Unix. No hay razón para que no se carguen todos para un usuario.
RaisinBranCrunch
puede obtener llamadas circulares si se cargan entre sí, es el problema, la mejor manera de evitarlo es voltear un booleano con una variable de entorno y solo cargar los otros archivos si el booleano no está configurado.
Alexander Mills
8

Solución fácil

1. Abra su ~/.zshrcarchivo

2. Agregue la siguiente línea al final del archivo.

source ~/.bash_profile
Manoj Shrestha
fuente
1
¡Brillante! Eso lo hizo por mí. Nunca se me ocurrió que zsh se estaba interponiendo después de instalar Oh-my-zh.
Cindy Conway
6

En mi máquina 10.9 se obtiene ~ / .bash_profile. Entonces, una entrada fuente .bashrc en ~ / .bash_profile debería hacer el trabajo.

Kit Ho
fuente
1

Coloque sus definiciones de alias en el archivo de perfil bash, debe crear el archivo pero se obtendrá automáticamente. Creo un archivo separado llamado alias.configuration y lo obtengo en .bash_profile solo porque tengo otro usuario definido y quiero tener el mismo conjunto de alias.


fuente
1
En realidad, ni .bashrctampoco .bash_profileson de origen.
Computista
1

Añadir

set -x

al comienzo de /etc/profile. Esto le da una cuenta de línea por línea de todo lo que se ejecuta cuando bashse pone en marcha, incluyendo los archivos de origen desde dentro /etc/profile, ~/.bash_profile, etc. Es un poco complicado si no entiende bashsecuencias de comandos muy bien, pero puede ser capaz de ver si hay un error en un archivo de inicio, y el resultado será útil para que alguien competente lo bashayude a localizar su problema.

Puede eliminar la set -xlínea cuando haya terminado de solucionar problemas.

chepner
fuente
1

En 10.10 e iTerm2 2.0, perfil personalizado

  • .bash_rc debería funcionar.
  • .bash_profile, intente "/ bin / bash --login" en lugar de "/ bin / bash"
zmx
fuente
He votado por esta respuesta porque parece ser la única que reconoce que en OS X, en algún momento, bash generaría ".bash_rc" en lugar de ".bashrc". Solo vine aquí porque estaba tratando de averiguar por qué (y todavía no lo sé).
Marnix A. van Ammers
0

En iTerm2, asegúrese de usar "shell de inicio de sesión" en lugar de un comando personalizado que incluye "login", que no hace lo que espera.

Jorge
fuente
¿Qué hace realmente el comando iTerm2?
studgeek
0

Realice el siguiente cambio y iTerm obtendrá bashrc

iTerm> Preferencias> General> [x] Comando: / bin / bash

jake
fuente
0

El problema se puede solucionar agregando la siguiente línea en / etc / bashrc

[-r "$ HOME / .bashrc"] &&. "$ HOME / .bashrc"

Bob Gu
fuente
-1

Combiné un par de soluciones para trabajar como se esperaba.

.bash_profile fuente y ejecutar en zsh.

Preferences -> Profiles -> General .

Seleccione Comando en Comando.
Y agregue en el cuadro de texto /bin/bash --login.

Luego en .bash_profile agrega línea /bin/zsh --login

Eso es.

albahaca muhammed
fuente
(1) ¿Qué? (2) Si bashsiempre has corrido zsh, eso no es lo que nadie espera.
Scott
Si configuro / bin / bash --login, no proporciona ninguna característica de zsh. Entonces, si lo cambio a loginshell con preferencia, no lee .bash_profile. Cada vez que tengo que correr source ~/.bash_profilemanualmente. @Scott Después de hacer las cosas anteriores, tengo zsh de la manera requerida.
Muhammed Basil
(1) Mi punto es que zshpodría ser lo que desea , pero esta pregunta no lo requiere ni lo pide, que está etiquetado [bash] y no dice nada al respecto zsh. (2) Si define alias y funciones de shell y establece variables (sin exportarlas) en su .bashrcy / o .bash_profile, ¿están disponibles para usted en su zshshell?
de Scott