.bashrc não originado no iTerm + Mac OS X

62

Estou usando o iTerm no Mac OS X 10.6. Parece que quando abro o iTerm, .bashrcnem .bash_profileé fornecido. Eu posso dizer porque os aliases definidos em .bashrcnão estão definidos. Como consertar?

Computist
fonte
2
O que está acontecendo é que o ~/.bash_profilebash está sendo chamado primeiro, o que está causando um curto-circuito nas instruções que você possui ~/.bashrc. Esse problema pode ocorrer inesperadamente se um programa não autorizado adicionar algumas instruções ao seu ~/.bash_profilequando anteriormente o arquivo não existia e você tiver colocado todos os seus comandos bash ~/.bashrc. A solução é excluir seu ~ / .bash_profile ou ter ~ / .bash_profile na origem de seu ~ / .bashrc. Isso pode ser realizado adicionando o comando: source ~/.bashrcao final do seu ~/.bash_profilee reiniciando o terminal.
Eric Leschinski

Respostas:

53

O Bash irá originar QUALQUER .bash_profile ou .bashrc, dependendo de como é chamado. Se for um shell de login, o Bash procurará ~ / .bash_profile, ~ / .bash_login ou ~ / .profile, nessa ordem, e fornecerá o primeiro que encontrar (e somente esse). Se não for um shell de login, mas for interativo (como a maioria das sessões de terminal), o Bash fornecerá ~ / .bashrc.

Provavelmente, o iTerm está procurando por ~ / .bashrc. Se estiver configurado para iniciar como um shell de login, ele procurará ~ / .bash_profile. É quase certamente um erro no arquivo de configuração, e não que o shell não o esteja fornecendo.

Eu colocaria uma linha no início de cada arquivo. No topo de ~ / .bash_profile:

export BASH_CONF="bash_profile"

E no topo de ~ / .bashrc:

export BASH_CONF="bashrc"

Em seguida, abra um novo iTerm e digite

$ echo $BASH_CONF

Isso deve confirmar que o arquivo está sendo originado e você pode verificar a sintaxe do arquivo.

brilhante
fonte
2
Definir uma variável de ambiente diferente para cada arquivo-fonte permite obter mais informações, ou seja, se mais do que um arquivo é adquirido, você saberá que, nost apenas o último (se não a ordem de origem.)
kmarsh
Isso ainda não carrega o arquivo .bashrc. Eu tive que adicionar fonte ~ / .bashrc às minhas preferências do iTerm e do Terminal. btw eu estou usando o Mac OS X 10.9.5.
Giant Elk
Acabei de adicionar um arquivo .profile e que funciona automaticamente no OS X 10.9.5 sem interferir nas preferências do seu terminal.
Giant Elk
1
Eu descobri que é um shell de login, indo em Preferências -> Perfis -> Geral e o Shell de Login é selecionado sob comando. Válido no MacOS El Capitan e no iTerm2 3.0.14
Aditya
A solução aqui não funcionou para mim, mas eu encontrei uma solução. No começo, não havia bashrc nem bash_profile. A resposta aqui propõe criar um bashrc. Em vez de criar um arquivo bashrc, criei um bash_profile e funcionou. Agora eu preciso entender por que o bashrc não foi executado e o bash_profile yes.
KalmanIsAGameChanger
68

No iTerm2, nenhuma dessas soluções funcionou para mim. Consegui fazê-lo ler corretamente meu arquivo .bashrc adicionando o comando

source ~/.bashrc 

no campo Enviar texto no início: em Configurações / Geral para o meu perfil do iTerm.

insira a descrição da imagem aqui

Mark Struzinski
fonte
O que aconteceu quando você fez o que a resposta aceita sugere? Nenhuma saída?
Daniel Beck
Direito. Não obtive saída e o iTerm 2 acabou de carregar o shell bash padrão com nenhum dos meus aliases.
Mark Struzinski
Essa resposta foi quebrada até agora - o segundo trecho deveria ser usado ~/.bashrc. Editou.
Daniel Beck
Eu uso o ZSH e estava tendo o mesmo problema. Exceto que nenhum dos meus arquivos de configuração existia em primeiro lugar e precisou ser criado. Eu usei essa resposta e defina o "Enviar texto no início", no entanto, quando reiniciei o ZSH, criei o .zsh e substitui o meu arquivo, consegui remover o "Enviar texto no início" e adicionar minhas configurações ao arquivo recém-gerado. Não tenho certeza se isso ajuda ninguém
Arnolio
Eu pensei que este era o meu problema .. e, ao longo do caminho, percebi que meu catálogo inicial não era a pasta em que eu comecei .. então, quando mudei meu .bash_profile para outro local e pensei que estava em -n (simbolizando para ele do meu ~ (casa) catálogo, eu estava no fato de adicionar um link simbólico na pasta errada adicionando isso aqui no caso de ajuda de outra pessoa, que estava indo para esta resposta..
Alisso
23

Eu só me pergunto, você realmente usa o Bash? Pode ser que você possa usar echo $SHELL, é bem possível que você esteja usando o zsh , você instalou o on-my-zh ?

De fato, encontro o mesmo problema que você, corrigi-o configurando ~ / .zshrc em vez de ~ / .bash_profile para shell de logon ou ~ / .bashrc para shell sem logon.

Talvez você possa tentar

AaronChen
fonte
1
Sugestão interessante, embora essa pergunta tenha 3 anos e tenha uma resposta aceita.
Tyson
12

Na minha máquina 10.6 ~/.profileé originada. Portanto, uma source .bashrcentrada ~/.profiledeve fazer o trabalho.

sebastiangeiger
fonte
Trabalhou para mim no Mac OS El Capitan.
user674669
Minha experiência diz que você não quer arquivo .bashx uma fonte de outro, eles são separados por uma razão :) Se você estiver fazendo isso, então algo está errado
Alexander Mills
@AlexanderMills A razão pela qual esses arquivos existem é porque o Mac os copiou diretamente do Unix. Não há razão para que todos eles não devam ser carregados para um usuário.
RaisinBranCrunch
você pode receber chamadas circulares se elas se carregarem, é o problema, a melhor maneira de evitar isso é inverter um booleano com um env var e carregar os outros arquivos apenas se o booleano não estiver definido.
Alexander Mills
8

Correção fácil.

1. Abra seu ~/.zshrcarquivo

2. Adicione a seguinte linha no final do arquivo.

source ~/.bash_profile
Manoj Shrestha
fonte
1
Brilhante! Isso fez por mim. Nunca me ocorreu que o zsh estava atrapalhando depois que instalei o Oh-my-zh.
Cindy Conway
6

Na minha máquina 10.9, o arquivo ~ / .bash_profile é fornecido. Portanto, uma entrada .bashrc de origem em ~ / .bash_profile deve fazer o trabalho.

Kit Ho
fonte
1

Coloque suas definições de alias no arquivo de perfil do bash, você precisa criar o arquivo, mas ele será originado automaticamente. Eu crio um arquivo separado chamado alias.configuration e o origino em .bash_profile apenas porque tenho outro usuário definido e quero ter o mesmo alias definido.


fonte
1
Na verdade, nem .bashrcnem .bash_profilesão originados.
Computist
1

Adicionar, acrescentar

set -x

para o começo de /etc/profile. Isto dá-lhe uma conta de linha por linha de tudo o que é executado quando bashinicia, incluindo arquivos de origem a partir de dentro /etc/profile, ~/.bash_profileetc. É um pouco assustador se você não entender bashscripting muito bem, mas você pode ser capaz de ver se há um erro em um arquivo de inicialização e a saída será útil para alguém com experiência em bashajudá-lo a localizar seu problema.

Você pode remover a set -xlinha quando terminar a solução de problemas.

chepner
fonte
1

No 10.10 e no iTerm2 2.0, perfil personalizado

  • .bash_rc deve funcionar.
  • .bash_profile, tente "/ bin / bash --login" em vez de "/ bin / bash"
zmx
fonte
Votei esta resposta porque parece ser a única pessoa que reconhece que no OS X, em algum momento, o bash obteria ".bash_rc" em vez de ".bashrc". Só vim aqui porque estava tentando descobrir o porquê (e ainda não sei).
Marnix A. van Ammers 02/02
0

No iTerm2, verifique se você está usando "login shell" em vez de um comando personalizado, incluindo "login", que não faz o que você espera.

George
fonte
O que o comando iTerm2 realmente faz?
studgeek
0

Faça a seguinte alteração e o iTerm fornecerá o bashrc

iTerm> Preferências> Geral> Comando [x]: / bin / bash

Jake
fonte
0

O problema pode ser corrigido adicionando a linha abaixo ao / etc / bashrc

[-r "$ HOME / .bashrc"] &&. "$ HOME / .bashrc"

Bob Gu
fonte
-1

Combinei algumas soluções para trabalhar como esperado.

.bash_profile fonte e execute no zsh.

Preferences -> Profiles -> General .

Selecione Comando em Comando.
E adicione na caixa de texto /bin/bash --login.

Em seguida, em .bash_profile, adicione a linha /bin/zsh --login

É isso aí.

manjericão
fonte
(1) o que? (2) Se você está bashsempre correndo zsh, não é isso que alguém espera.
Scott
Se eu definir / bin / bash --login, ele não fornecerá nenhum recurso do zsh. Então, se eu alterá-lo para loginshell de preferência, ele não lê .bash_profile. Toda vez que eu tenho que correr source ~/.bash_profilemanualmente. @ Scott Depois de fazer as coisas acima, tenho o zsh da maneira necessária.
muhammed manjericão
(1) O que quero dizer é que zshpode ser o que você deseja , mas não é exigido ou solicitado por esta pergunta, que está marcada como [bash] e não diz nada sobre zsh. (2) Se você definir aliases e funções de shell e definir variáveis ​​(sem exportá-las) em seu .bashrce / ou .bash_profile, elas estarão disponíveis para você em seu zshshell?
Scott