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.