Questão Onde encontrar o arquivo .bashrc no Mac OS X Snow Leopard e Lion?


Eu quero instalar rvm na minha máquina Snow Leopard.

Ele diz que eu preciso adicionar uma linha ao meu .bashrc arquivo (estou usando bash) mas onde está meu .bashrc Arquivo?


83


origem


Você deve colocar sua solução em uma resposta e aceitá-la (você terá que esperar um ou dois dias antes que SU permita). Dessa forma, as pessoas com o mesmo problema podem ver a pergunta e ver se ela tem uma resposta. - Nifle
Sua solução não é diferente da resposta mais votada .. - David Cowden
Só para ter certeza, isso não é um problema de "Linux = .bashrc vs. Mac OS =. (Bash_) profile" os arquivos de inicialização do shell funcionam da mesma maneira no Linux e Mac e o arquivo .bashrc é o lugar mais aceito para Session configurações específicas. você usa, por exemplo, o tmux ou a tela, você pode não ter sessões de login, mas ainda deseja seus aliases. A razão pela qual o Mac se sente diferente é que a maioria das distribuições Linux distribui scripts de perfil de sistema ou perfis de esqueleto que já delegam (fonte) bashrc. - eckes


Respostas:


Em relação ao problema com .bashrc acima:

Na maioria dos sistemas, ~/.bashrc é usado somente ao iniciar um interativo não-login Concha. No entanto, quando você inicia um novo shell, muitas vezes é interativo entrar Concha. Já que esta é uma entrar shell, o .bashrc é ignorado. Para manter o ambiente consistente entre os shells de não login e de login, você deve .bashrc de você .profile ou o seu .bash_profile.

Veja o Manual de Referência do Bash, seção 6.2 Arquivos de Inicialização Baseada

Chamado como um shell de login interativo   ou com --login

Quando o Bash é invocado como um interativo   shell de login, ou como um não-interativo   shell com a opção --login,   primeiro lê e executa comandos de   o arquivo / etc / profile, se esse arquivo   existe. Depois de ler esse arquivo,   procura por ~ / .bash_profile,   ~ / .bash_login e ~ / .profile, nesse   ordem e lê e executa comandos   do primeiro que existe e é   legível.

Chamado como um shell interativo de não-login

Quando um shell interativo que não é um shell de login é iniciado, o Bash lê e executa   comandos de ~ / .bashrc, se esse arquivo existir.

Então, normalmente, seu ~ / .bash_profile   contém a linha

   if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

após (ou antes) qualquer inicialização específica do login.

No meu Mac (Running Leopard), não havia linha para a fonte ~/.bashrc. Eu tive que adicionar essa funcionalidade por conta própria.

Em alguns sistemas e outros sistemas operacionais, .bashrc é proveniente do global /etc/profile ou /etc/bash_profile , ou é feito usando os arquivos de modelo de /etc/skel.

Para ser sincero, a distinção entre .bashrc e .bash_profile não é bem compreendido pela comunidade. Quando muitos desenvolvedores dizem "Adicione isso ao seu .bashrc", o que eles realmente querem dizer é "Adicione isso ao seu .bash_profile". Eles querem que a funcionalidade seja adicionada ao seu entrar shell (que é .bash_profile), não ao seu não-login Concha. Na realidade, isso geralmente não importa e colocando configuração em .bashrc é aceitável.


74



Este link fornece uma boa visão geral dos tipos de shells e quando os arquivos de inicialização são carregados - hacktux.com/bash/bashrc/bash_profile - studgeek
O que se entende por "originado" aqui? - elgrego
@elgrego, aqui está uma boa descrição: Quando um arquivo é originado (digitando o nome de arquivo de origem ou. Filename na linha de comando), as linhas de código no arquivo são executadas como se fossem impressas na linha de comando. Vejo tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html - Stefan Lasiewski


Então, no Mac OS X Snow Leopard e no Mac OS X Lion, o arquivo que é carregado é chamado .profile, não .bashrc.

O que você quer fazer é criar um arquivo em ~/.profile e chame-o .profile (se já não existir).

Coloque todas as informações necessárias para carregar com cada instância do bash (Obrigado, thepurplepixel).

Algumas notas secundárias:

  1. O período na frente do arquivo marca-o como invisível ao Finder e o comando ls por padrão. Para listar arquivos invisíveis usando o comando ls comando do Terminal, use o -a como um parâmetro como tal: ls -a
  2. o ~ símbolo significa /Users/YourUserName onde YourUserName é o nome curto do seu nome de usuário.

Edit: Chris Page observa (corretamente) que qualquer coisa que você coloque em um arquivo .profile se aplicará a qualquer shell que você estiver usando (por exemplo, zhs, bash, et cetera). Se você quiser que o conteúdo afete apenas o shell bash, coloque o conteúdo em um .bash_profilearquivo em vez de um .profile Arquivo.


56



Sua pergunta foi respondida [corretamente] em 1 de junho de 2010 - um dia depois que você perguntou. Mais de um ano depois, você volta e fornece exatamente a mesma resposta e aceita sua própria resposta ... - David Cowden
Na verdade, sua resposta adiciona mais detalhes do que a resposta dada em 1 de junho de 2010. Ele aborda especificamente o problema no Mac OS X, que achei útil. - webworm
Note que se um .bash_profile já existe no seu diretório inicial, então .profile arquivo não será lido! - Phani
Eu tenho uma nova instalação do Mac Os El capitan. Não há perfil Arquivo. Basta criar um arquivo .profile e funciona. Eu pessoalmente renomeiei meu .bashrc para .profile. - Nicolas Thery


Você tem que fazer o seu próprio .bashrc. Você pode simplesmente usar um editor de texto para criar um arquivo chamado .bashrc (sem extensão) com o conteúdo que você quer e salve-o em seu diretório pessoal (/Users/YourUserName/).


4



Na verdade, isso não funcionou, mas você me enviou na direção certa, dizendo-me para fazer o meu próprio arquivo. O arquivo que funcionava em uma configuração do Snow Leopard era .profile, não .bashrc (que por algum motivo não é carregado neste sistema operacional). Vou postar instruções detalhadas na questão. Obrigado! - Yuval
@Yuval: Por padrão, um .bashrc vai funcionar, mas somente se não houver .profile. eu acho ~/.profile existe por padrão, no entanto. Ainda bem que pude ajudar! (E você deve colocar sua solução em uma resposta e aceitá-la para futuros leitores desta questão). - squircle
Eu acho que o seu comentário sobre somente se não houver .profile está incorreto. .bashrc funcionará dentro de um shell interativo de não-login, ou se for originado de .profile (.bash_profile é provavelmente um lugar melhor, já que .profile é para o shell Bourne). O .profile é usado durante um shell interativo de não-login. - Stefan Lasiewski
@ Stefan Isso parece correto, então. Eu não sou especialista :) - squircle
Ninguém é ;). Essas coisas (.bashrc vs .profile vs. .bash_profile vs. .bash_login vs. shell de login interativo vs shell interativo não-login vs shell não interativo) são confusas, e são quebradas e substituídas por muitos Unixes e shell scripts. - Stefan Lasiewski


Eu acho que no meu OS 10.6.5 as configurações do bash estão em "/ etc / bashrc". Eu acho que isso é as especificações de nível superior para o shell.

No entanto, você precisa de uma conta root para modificá-lo. As especificações locais por usuário "~ / .bashrc" devem começar com o seguinte snippet, para ler e carregar as configurações bash no nível do sistema:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

Eu normalmente adiciono aliases no nível do sistema bashrc para que todos os usuários possam acessá-los também. A menos que eles não queiram usar seus atalhos e aliases.

Boa sorte!


3



/ etc / profile (executado por shells de login) é um script de inicialização bash global que se aplica a todos os usuários e fornece comportamentos padrão para shells de login. Por sua vez, ele executa o / etc / bashrc, que contém personalizações que se aplicam a shells de login e não-login. Da mesma forma, usuários individuais devem criar um arquivo ~ / .bash_profile que execute ~ / .bashrc, que é onde a maioria das personalizações deve ser, e ~ / .bashrc deve executar / etc / bashrc para herdar comportamentos padrão para shells não-login. - Chris Page
Para usuários individuais, é melhor adicionar essas personalizações ao seu diretório pessoal em ~/.bashrc , não /etc/bashrc. /etc/bashrc são as configurações globais para todos os usuários do seu sistema, o que provavelmente não é o que você deseja. Além disso, a Apple pode vir e mudar /etc/bashrc periodicamente, o que pode acabar com suas personalizações. - Stefan Lasiewski


Use o arquivo .profile para incluir qualquer coisa que você incluiria em um arquivo .bashrc do Linux.

Por exemplo

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 

1



Eu recomendo que você use ~ / .bash_profile (em vez de ~ / .profile), a menos que tenha certeza de que deseja que suas personalizações entrem em vigor em outros shells e que sejam compatíveis. - Chris Page
Só para ter certeza, isso não é um problema de "Linux = .bashrc vs. Mac OS =. (Bash_) profile" os arquivos de inicialização do shell funcionam da mesma maneira no Linux e Mac e o arquivo .bashrc é o lugar mais aceito para Session configurações específicas. você usa, por exemplo, o tmux ou a tela, você pode não ter sessões de login, mas ainda deseja seus aliases. A razão pela qual o Mac se sente diferente é que a maioria das distribuições Linux distribui scripts de perfil de sistema ou perfis de esqueleto que já delegam (fonte) bashrc. - eckes