Mac OS X .bashrc não está funcionando


78

Eu tenho um .bashrcarquivo de uma linha no meu diretório pessoal:

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

Mas não está criando o alias. Por que poderia ser isso?

Respostas:


102

No OSX, .bash_profileé usado em vez de .bashrc.

E sim, o .bash_profilearquivo deve estar localizado em /Users/YourName/
(em outras palavras ~/.bash_profile)

Por exemplo, /Users/Aaron/.bash_profile


11
Esta não é a resposta certa. Os aliases não são herdados; portanto, se você os definir apenas em .bash_profile, eles não serão definidos em shells que não são de login (por exemplo, quando você executa o bash dentro do bash).
2001

11
Ou pode-se usar bash_aliases que tem o mesmo efeito que colocar os aliases no bashrc, mas mais gerenciáveis: ss64.com/osx/syntax-bashrc.html
Atul Ingle

4
na minha Bash_profile eu só escrevi uma linha para Alias (tipo de) bashrc ->source ~/.bashrc
Eric Hodonsky

86

.[bash_]profilee .bashrcpode ser usado no OS X e Linux. O primeiro é carregado quando o shell é um shell de logon; o último quando não é. A diferença real é que o Linux executa um shell de logon quando o usuário faz login em uma sessão gráfica e, quando você abre um aplicativo de terminal, esses shells são shells que não são de login; enquanto o OS X não executa um shell no logon gráfico e, quando você executa um shell no Terminal.app, é um shell de logon.

Se você deseja que seus aliases funcionem nos shells de login e não-logon (e geralmente o fazem), você deve colocá-los em .bashrc e source .bashrc em seu .bash_profile, com uma linha como esta:

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

Isso se aplica a qualquer sistema usando o bash.


15
+1 com a ressalva de que tudo em .bashrc será executado novamente para subconchas (e subsub-, subsubsub-, etc.), portanto, por exemplo PATH=$PATH:/my/private/binaries, levará ao inchaço de PATH. Veja isso para uma solução alternativa.
Gordon Davisson

2
Verdadeiro. Como as variáveis ​​de instância exportadas são herdadas, apenas as defino em .profilevez de .bashrc.
2001

11
@LaC, você pode explicar _Como as variáveis ​​de instância exportadas são herdadas, eu apenas as defino em .profile_…?
sam

11
@ sam, eu não sei de onde "instância" veio. Eu apenas quis dizer "variáveis ​​exportadas". Infelizmente não posso editar esse comentário.
LaC 15/01/14

2
@dinosaur: "-r" verifica se o arquivo está legível.
Mhvelplund

7

Ou crie um link sym chamado .bash_profile apontado para o seu .bashrc

ln -s .bashrc .bash_profile

2

Não está sendo .bash_profileusado como alias porque é usado em vez de .bashrcno Mac OS X.

Então você tem duas opções:

  • Coloque o alias no seu ~/.bash_profile

  • Ou obtenha o seu .bashrcno seu .bash_profileadicionando esta linha ao .bash_profile:

    . ~/.bashrc


1

No Mac OS X Yosemite , execute o seguinte comando:

vi ~/.profile

Em seguida, adicione a seguinte linha:

source ~/.bashrc

Agora salve e feche .profile, abra uma nova janela do Terminal ou apenas execute:

source ~/.profile

Veja também esta resposta . Funcionou na v10.10.3.


Isso é pouco mais do que uma reformulação das respostas de quatro anos atrás.
G-Man diz 'Reinstate Monica'

Claro, é fácil ler e aplicar. Mais uma pequena contribuição - já que os outros arquivos mencionados não estavam disponíveis no meu OS Yosemite.
5155 Ricardo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.