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?

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


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.


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

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


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.


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