Mac OS X .bashrc no funciona

78

Tengo un .bashrcarchivo de una línea en mi directorio de inicio:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

Pero no está creando el alias. ¿Por qué podría ser eso?

William Jockusch
fuente

Respuestas:

102

En OSX, .bash_profilese usa en lugar de .bashrc.

Y sí, el .bash_profilearchivo debe ubicarse en /Users/YourName/
(En otras palabras, ~/.bash_profile)

Por ejemplo, /Users/Aaron/.bash_profile

Azz
fuente
11
Esta no es la respuesta correcta. Los alias no se heredan, por lo tanto, si solo los define en .bash_profile, no se definirán en shells sin inicio de sesión (por ejemplo, cuando ejecuta bash dentro de bash).
LaC
1
O puede usar bash_aliases que tiene el mismo efecto que poner los alias en bashrc, pero más manejable: ss64.com/osx/syntax-bashrc.html
Atul Ingle
44
en mi .bash_profile acabo de escribir una línea para alias (más o menos) bashrc ->source ~/.bashrc
Eric Hodonsky
86

.[bash_]profiley .bashrcse puede usar tanto en OS X como en Linux. El primero se carga cuando el shell es un shell de inicio de sesión; este último cuando no lo es. La verdadera diferencia es que Linux ejecuta un shell de inicio de sesión cuando el usuario inicia sesión en una sesión gráfica, y luego, cuando abre una aplicación de terminal, esos shells son shells que no son de inicio de sesión; mientras que OS X no ejecuta un shell en el inicio de sesión gráfico, y cuando ejecuta un shell desde Terminal.app, ese es un shell de inicio de sesión.

Si desea que sus alias funcionen tanto en shells de inicio de sesión como de no inicio de sesión (y generalmente lo hace), debe ponerlos en .bashrc y source .bashrc en su .bash_profile, con una línea como esta:

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

Esto se aplica a cualquier sistema que use bash.

Laca
fuente
15
+1 con la advertencia de que todo en .bashrc se ejecutará nuevamente para subcapas (y subsub-, subsubsub-, etc.), por lo que, por ejemplo, PATH=$PATH:/my/private/binariesdará lugar a la hinchazón PATH. Vea esto para una solución alternativa.
Gordon Davisson
2
Cierto. Dado que las variables de instancia exportadas se heredan, simplemente las configuré en .profilelugar de .bashrc.
LaC
1
@LaC, ¿puede explicarme? Dado que las variables de instancia exportadas se heredan, ¿acabo de configurarlas en .profile_...?
sam
1
@sam, no sé de dónde vino la "instancia". Solo quise decir "variables exportadas". Lamentablemente no puedo editar ese comentario.
LaC
2
@dinosaurio: "-r" comprueba si el archivo es legible.
mhvelplund
7

O cree un enlace sym llamado .bash_profile apuntado a su .bashrc

ln -s .bashrc .bash_profile
Barrett
fuente
2

No tiene alias porque .bash_profilese usa en lugar de .bashrcen Mac OS X.

Así que tienes dos opciones:

  • Pon el alias en tu ~/.bash_profile

  • O obtenga el .bashrcsuyo .bash_profileagregando esta línea a .bash_profile:

    . ~/.bashrc

Wuffers
fuente
1

En Mac OS X Yosemite , ejecute el siguiente comando:

vi ~/.profile

Luego agregue la siguiente línea:

source ~/.bashrc

Ahora guarde y cierre .profile, luego abra una nueva ventana de Terminal o simplemente ejecute:

source ~/.profile

Ver también esta respuesta . Funcionó en v10.10.3.

Ricardo
fuente
Esto es poco más que una repetición de las respuestas de hace cuatro años.
G-Man dice 'Reincorporar a Monica'
Claro, solo un fácil de leer y aplicarlo. Además de una pequeña contribución, ya que los otros archivos mencionados no estaban disponibles en mi sistema operativo Yosemite.
Ricardo