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?
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.
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.
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.
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.
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.
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.
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.
(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?
~/.bash_profile
bash 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_profile
quando 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 ~/.bashrc
ao final do seu~/.bash_profile
e reiniciando o terminal.Respostas:
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:
E no topo de ~ / .bashrc:
Em seguida, abra um novo iTerm e digite
Isso deve confirmar que o arquivo está sendo originado e você pode verificar a sintaxe do arquivo.
fonte
No iTerm2, nenhuma dessas soluções funcionou para mim. Consegui fazê-lo ler corretamente meu arquivo .bashrc adicionando o comando
no campo Enviar texto no início: em Configurações / Geral para o meu perfil do iTerm.
fonte
~/.bashrc
. Editou.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
fonte
Na minha máquina 10.6
~/.profile
é originada. Portanto, umasource .bashrc
entrada~/.profile
deve fazer o trabalho.fonte
Correção fácil.
1. Abra seu
~/.zshrc
arquivo2. Adicione a seguinte linha no final do arquivo.
fonte
Na minha máquina 10.9, o arquivo ~ / .bash_profile é fornecido. Portanto, uma entrada .bashrc de origem em ~ / .bash_profile deve fazer o trabalho.
fonte
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
.bashrc
nem.bash_profile
são originados.Adicionar, acrescentar
para o começo de
/etc/profile
. Isto dá-lhe uma conta de linha por linha de tudo o que é executado quandobash
inicia, incluindo arquivos de origem a partir de dentro/etc/profile
,~/.bash_profile
etc. É um pouco assustador se você não entenderbash
scripting 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 embash
ajudá-lo a localizar seu problema.Você pode remover a
set -x
linha quando terminar a solução de problemas.fonte
No 10.10 e no iTerm2 2.0, perfil personalizado
fonte
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.
fonte
Faça a seguinte alteração e o iTerm fornecerá o bashrc
iTerm> Preferências> Geral> Comando [x]: / bin / bash
fonte
O problema pode ser corrigido adicionando a linha abaixo ao / etc / bashrc
fonte
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í.
fonte
bash
sempre correndozsh
, não é isso que alguém espera.source ~/.bash_profile
manualmente. @ Scott Depois de fazer as coisas acima, tenho o zsh da maneira necessária.zsh
pode ser o que você deseja , mas não é exigido ou solicitado por esta pergunta, que está marcada como [bash] e não diz nada sobrezsh
. (2) Se você definir aliases e funções de shell e definir variáveis (sem exportá-las) em seu.bashrc
e / ou.bash_profile
, elas estarão disponíveis para você em seuzsh
shell?