.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?


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.


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


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


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.


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

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.


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.


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.


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"

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.


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


0

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

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


-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í.


(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
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.