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


89

Quero instalar o rvm na minha máquina Snow Leopard.

Ele diz que preciso adicionar uma linha ao meu .bashrcarquivo (estou usando o bash), mas onde está o meu .bashrcarquivo?


11
Você deve colocar sua solução em uma resposta e aceitá-la (você terá que esperar um dia ou dois antes que a SU o permita). Dessa forma, pessoas com o mesmo problema podem olhar para a pergunta e ver que ela tem uma resposta.
Nifle

11
Sua solução não é diferente da resposta mais votada ..
David Cowden

Apenas para garantir, isso não é um problema do "Linux = .bashrc vs. Mac OS =. (Bash_) profile". Os arquivos de inicialização do shell funcionam da mesma maneira no Linux e no Mac e o arquivo .bashrc é o local mais apropriado para a Sessão. configurações específicas. você usa, por exemplo, tmux ou screen, 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 envia scripts de perfil de sistema ou perfis de esqueleto que já delegam o bashrc (de origem).
Eckes

Respostas:


78

Em relação ao problema .bashrcacima:

Na maioria dos sistemas, ~/.bashrcé usado apenas ao iniciar um shell interativo sem logon . No entanto, quando você inicia um novo shell, geralmente é um shell de logon interativo . Como este é um shell de logon , o .bashrcé ignorado. Para manter o ambiente consistente entre shells de não-login e de login, você deve originar o .bashrcde seu .profileou de seu .bash_profile.

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

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

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

Chamado como um shell interativo sem logon

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

depois (ou antes) de qualquer inicialização específica de login.

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

Em alguns sistemas e outros sistemas operacionais, .bashrcé originário do global /etc/profileou /etc/bash_profile, ou é feito usando os arquivos de modelo de /etc/skel.

Para ser honesto, a distinção entre .bashrce .bash_profilenão é bem compreendida 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 shell de logon (que é .bash_profile), não ao seu shell que não é de logon . Na realidade, isso geralmente não importa e colocar a configuração .bashrcé aceitável.


Este link dá uma boa visão geral dos tipos de conchas e quando os arquivos de inicialização são carregados - hacktux.com/bash/bashrc/bash_profile
studgeek

O que se entende por "fonte" aqui?
Elgrego 4/11

@elgrego, aqui está uma boa descrição: Quando um arquivo é originado (digitando o nome do arquivo de origem ou o. filename na linha de comando), as linhas de código no arquivo são executadas como se fossem impressas na linha de comando. Veja tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Stefan Lasiewski

60

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

O que você deseja fazer é criar um arquivo ~/.profilee chamá-lo de .profile (se ele ainda não existir).

Coloque as informações necessárias para carregar com cada instância do bash (obrigado, o pixel roxo).

Algumas notas laterais:

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

Edit: Chris Page observa (corretamente) que o que você colocar em um arquivo .profile será aplicado a qualquer shell que estiver usando (por exemplo, zhs, bash, etc.). Se você deseja que o conteúdo afete apenas o shell bash, coloque o conteúdo em um .bash_profilearquivo em vez de em um .profilearquivo.


5
Sua pergunta foi respondida [corretamente] em 1º de junho de 2010 - um dia após a solicitação. Mais de um ano depois, você volta e fornecer a mesma resposta exata e aceitar a sua própria resposta ...
David Cowden

3
Na verdade, sua resposta adiciona mais detalhes do que a resposta dada em 1º de junho de 2010. Ele aborda especificamente a questão no Mac OS X que achei útil.
Webworm

3
Observe que, se .bash_profilejá existe em seu diretório pessoal, o .profilearquivo não será lido!
Phani

Eu tenho uma nova instalação do Mac Os El capitan. Não há arquivo de perfil . Basta criar um arquivo .profile e ele funciona. Renomeei pessoalmente meu .bashrc para .profile.
Nicolas Thery # 11/16

4

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 desejado e salvá-lo em seu diretório pessoal ( /Users/YourUserName/).


11
na verdade, isso não funcionou, mas você me enviou na direção certa, dizendo-me para criar meu próprio arquivo. O arquivo que funcionou em uma configuração do Snow Leopard era .profile, não .bashrc (que, por algum motivo, não está carregado neste sistema operacional). Vou postar instruções detalhadas na pergunta. Obrigado!
Yuval

@Yuval: Por padrão, um .bashrcfuncionará, mas somente se não houver .profile. Eu acho que ~/.profileexiste 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 pergunta).
squircle

Eu acho que seu comentário apenas se não houver .profile está incorreto. .bashrc funcionará dentro de um shell interativo sem logon ou se tiver origem em .profile (.bash_profile é provavelmente um lugar melhor, pois .profile é para o shell Bourne). .profile é usado durante um shell interativo sem logon.
Stefan Lasiewski

@ Stefan Parece correto, então. Eu não sou um especialista :)
squircle

2
Ninguém é ;). Esse material (.bashrc vs .profile vs. .bash_profile vs. .bash_login vs. shell de logon interativo x shell interativo de não logon vs shell não interativo) é confuso e é quebrado e substituído por muitos Unixes e scripts de shell.
Stefan Lasiewski

3

Acho que no meu sistema operacional 10.6.5 as configurações do bash estão em "/ etc / bashrc". Eu acho que essas são as especificações de nível superior para o shell.

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

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

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

Boa sorte!


2
/ etc / profile (executado por shells de login) é um script de inicialização global que se aplica a todos os usuários e fornece comportamentos padrão para shells de login. Por sua vez, executa o / etc / bashrc, que contém personalizações que se aplicam aos shells de login e não-login. Da mesma forma, usuários individuais devem criar um arquivo ~ / .bash_profile que execute ~ / .bashrc, onde é a maioria das personalizações, e ~ / .bashrc deve executar / etc / bashrc para herdar comportamentos padrão para shells sem login.
Chris Page

11
Para usuários individuais, é melhor adicionar essas personalizações ao diretório inicial em ~/.bashrc, não /etc/bashrc. /etc/bashrcsã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 aparecer e mudar /etc/bashrcperiodicamente, o que pode prejudicar suas personalizações.
Stefan Lasiewski

1

Use o arquivo .profile para adicionar qualquer coisa que você adicionaria a 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" 

2
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

Apenas para garantir, isso não é um problema do "Linux = .bashrc vs. Mac OS =. (Bash_) profile". Os arquivos de inicialização do shell funcionam da mesma maneira no Linux e no Mac e o arquivo .bashrc é o local mais apropriado para a Sessão. configurações específicas. você usa, por exemplo, tmux ou screen, 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 envia scripts de perfil de sistema ou perfis de esqueleto que já delegam o bashrc (de origem).
Eckes
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.