Coloquei alguns comandos de alias no meu .bashrc
arquivo, para que eles possam ser carregados toda vez que abro uma nova janela do Terminal. No entanto, isso não acontece.
Eu tenho que selecionar run script:
no Terminal> Preferências> " MyDefaultTheme "> Shell prefpane e adicionar:
source .bashrc && clear
para que ele funcione ...
Isso parece estranho, já que muitos tutoriais dizem apenas que você precisa adicionar ao .bashrc
arquivo e tudo está bem.
Observe que eu não corro bash
ao usar o terminal, gosto do outro (padrão) (não sei o que é) melhor, porque me mostra onde estou o tempo todo, por exemplo:
>>d54c6b47b:~ romeo$
ao invés de:
>>bash$
No bash, tudo é carregado como deveria.
Portanto, minha pergunta é: por que meu .bashrc
arquivo não foi carregado automaticamente e eu tive que adicionar a opção de chamá-lo sempre?
Além disso, algum tutorial me disse para fazer algo como:
$alias la=’ls -la’ >> ~/.bashrc
que deve escrever o alias para o meu .bashrc
, isso também não funciona ...
Note que eu sou um novato em UNIX, então seja gentil.
fonte
.bashrc
", mas é isso.csh
(ou outra variante) melhor. Mas você deve saber que o>>bash$
pode ser alterado :).profile
em seu diretório pessoal #Respostas:
Basta colocar isso no seu
.profile
arquivo a partir do diretório home e ele deve funcionar na próxima vez que você iniciar um novo shell ou depois de executarsource ~/.profile
Este link indica claramente a ordem na qual os arquivos de inicialização são lidos e carregados pelo shell: http://hayne.net/MacDev/Notes/unixFAQ.html#shellStartup
fonte
~/.bashrc
. No entanto, a solução não é simplesmente colocar seu.bashrc
conteúdo no arquivo de inicialização do logon, porque esses dois arquivos devem executar diferentes tipos de configuração. Em vez disso, a configuração canônica do Bash é ter sua~/.bash_profile
fonte~/.bashrc
em algum momento apropriado do script (geralmente o último).Estive lá, fiz isso. Do que soube, o OS X não lê o
.bashrc
arquivo no bash start. Em vez disso, ele lê os seguintes arquivos (na seguinte ordem):/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
Veja também o comentário informativo e útil de Chris Johnsen :
Eu normalmente apenas colocar as coisas que eu normalmente colocados em
~/.bashrc
que~/.profile
- tem funcionado até agora como um encanto.fonte
/usr/bin/login
, o que torna o shell um shell de login. Em todas as plataformas (e não apenas Mac OS X) o bash não usa.bashrc
para shells de login (somente/etc/profile
e o primeiro de.bash_profile
,.bash_login
,.profile
que existe e é legível). É por isso que "colocarsource ~/.bashrc
no seu.bash_profile
" é um conselho padrão.~/.bash_profile
,~/.profile
,~/.bash_login
, não toda a elas. Você pode executar um teste simples criando os 3 arquivos. Parece que o terminal do bash tem a preferência de~/.bash_profile
>~/.bash_login
>~/.profile
. Se qualquer um deles existir, os de menor preferência serão ignorados. É por isso que às vezes é recomendado para também fonte~/.profile
em~/.bash_profile
.Coloquei tudo em
~/.bashrc
e apenassource ~/.bashrc
em .profile.Isso permite que as sessões screen e xterm (e eu acho que tmux) herdem meu ambiente, pois as sessões sem login são executadas apenas
.bashrc
, enquanto as sessões de login (por exemplo, terminal ou iTerm) são executadas apenas.profile
.fonte
.profile
é comum a vários shells e só deve conter código sh compatível com POSIX. Se for originado,.bashrc
é possível que ele contenha código específico do Bash (a existência do.bashrc
arquivo é específica do Bash). Eu recomendo renomear seu nome.profile
para,.bash_profile
pois você o está usando de uma maneira específica do Bash. Ou, insira um código genérico.profile
e crie uma.bash_profile
dessas fontes.profile
e.bashrc
.Existem dois cenários:
Para ambos, você deseja obter
~/.bashrc
em seu perfil o carregamento ou a origem do seu perfil quando o shell do seu terminal iniciar.LINUX
No Linux,
~/.profile
é automaticamente fonte no seu shell quando é iniciado. Portanto, se você for ao seu terminal e digitarcd ~; ls -A
, verá todos os seus arquivos e diretórios no seu diretório pessoal (/home/usrname/
). Você deve ver um arquivo chamado.profile
. Este é o arquivo que é automaticamente "originado" quando você inicia o terminal.Se você deseja adicionar aliases e funções a
~/.bashrc
(que é o que eu faço), você deve (dentro de~/.profile
adicionar uma instrução if que verifique se~/.bashrc
é um arquivo não vazio e, em seguida, origine-o.Para verificar se você
~/.profile
já faz isso, insiranano ~/.profile
. Isso o abrirá em um editor de texto (você pode usar o gedit se souber que possui ou mesmo o vim se souber como usá-lo). Você pode obter um arquivo de texto vazio (não deveria), mas se você simplesmente prosseguir. Se você não vir uma linha em qualquer lugar que digasource ~/.bashrc
, digite as seguintes linhas em algum lugar (coloque-a em um local razoável, como no final ou no início, e não no meio de uma instrução if):Isso verifica se
~/.bashrc
é um arquivo não vazio (com if[ -s ~/.bashrc ]
) e, se é, fornece o arquivo . Bem simples. Agora, você pode adicionar qualquer alias válido, função, variável, etc para~/.bashrc
.MAC OS X
Por padrão, fontes de Max OS X
~/.bash_profile
. Para poder adicionar coisas~/.bashrc
(que também é o que faço no OS X), siga o mesmo procedimento que o linux. No terminal, digitecd ~; nano .bash_profile
. Verifique se há uma linha que dizsource ~/.bashrc
e, se não estiver lá, adicione a instrução if acima (if [ -s ~/.bashrc ]; then source ~/.bashrc; fi
).NOTAS
Ao escrever uma declaração if, certifique-se de deixar espaços entre basicamente tudo (por exemplo
if [ -s ~/.bashrc]; then echo "found"; fi
, não funciona porque não há espaço entre -~/.bashrc
e]
o intérprete pensará que essa é uma palavra).Se você quiser descobrir como verificar melhor as coisas em uma instrução if, vá para o terminal e digite
man \[
; isso essencialmente fornece o detalhamento de uma instrução if. Por exemplo,if [ -f /path/to/file ]; then echo "it's a file"; else echo "not a file"; fi
verifica se/path/to/file
é um arquivo e se ele é impresso em stdout adequadamente. Eu sempre refiro isso também para uma referência mais fácil e rápida: 7.2. Operadores de teste de arquivo .Eu espero que isso ajude. Lembro como fiquei confuso quando comecei todas essas coisas (que não faz muito tempo); então, boa sorte com seus futuros empreendimentos UNIX!
fonte
.profile
só é originária se o seu shell é um shell de login, caso contrário,.bashrc
é origináriaFornecer .profile em .bash_profile fez isso por mim
fonte
.bashrc
no seu.bash_profile
e não no.profile
..bash_profile
é específico do Bash e deve buscar os outros dois.Descobri que, depois de instalar o rvm (auto-installer, sem edições manuais), ele havia criado um
~/.bash_login
arquivo para si, onde anteriormente nunca tinha um.No entanto, isso significa que minhas
~/.profile
configurações e aliases não foram mais carregados! Muitos atalhos desapareceram. Eu pensei que eles corriam seqüencialmente, não exclusivamente: - /Eu adicionei
para
~/.bash_login
encadear as coisas como eu esperava.fonte
.profile
é comum a vários shells diferentes e deve conter apenas código sh compatível com POSIX..bash_profile
é específico do Bash e pode conter código específico do Bash. Em geral, se você estiver usando o Bash, deverá preferir, a.bash_profile
menos que tenha cuidado para garantir que seu código de inicialização não contenha nada que dependa do Bash. Qualquer programa criado.bash_login
provavelmente o fez porque contém código específico do Bash, mas deveria ter incluído o código na origem,.profile
se existir.Colocando ...
... no
~/.bashrc
e, em seguida, a fonte~/.bashrc
no meu~/.bash_profile
não funcionou para o programa Terminal que vem instalado.Mas depois fui ao menu suspenso Editar> Preferências do perfil , guia Título e comando , e selecionei Executar comando como um shell de login na seção de comandos dessa página.
Depois de fazer isso, iniciar um novo terminal mostra o resultado desejado quando digito
ie "rvm é uma função". Ele não fez isso até que eu fiz essa mudança, e é a única mudança que eu fiz depois que os
.bash_profile
e.bashrc
alterações descritas em outras respostas aqui.fonte
Antes de tudo, deixe-me dizer que esse
~/.bashrc
é o arquivo que é executado toda vez que um segundo shell é chamado (ao executar um script de shell, por exemplo), e~/.profile
é chamado em todo login.Por isso, recomendo que você escreva o
. ~/.bashrc
comando em seu~/.profile
arquivo, e esse comando executará o arquivo bashrc toda vez que você fizer login.fonte
Corri para o mesmo problema depois de instalar o rbenv no meu servidor remoto (Digital Ocean) Ubuntu 16.04.
De alguma forma, criou
~/.bash_profile
. É o mesmo~/.bashrc
em um sistema OS X.E o Ubuntu começou a ler apenas
~/.bash_profile
, mas não~/.bashrc
como deveria.Então, eu apenas fiz backup dos meus dados
~/.bash_profile
com isso:E renomeou o antigo
~/.bashrc
para~/.bash_profile
Funcionou para mim. Após o meu login ssh, tenho tudo carregado
~/.bashrc
.fonte
Caso isso possa ajudar mais alguém ...
Certifique-se de editar o
.bashrc
arquivo certo para o usuário certo. Eu tive um problema semelhante ao usar o Vagrant. Depois de executarvagrant ssh
meu.bashrc
arquivo não estava sendo executado. A solução foi simples, pois pensei que o vagrant estava fazendo login com o usuário chamado vagrant e, na verdade, estava fazendo login como outro usuário. Então, eu estava editando o.bashrc
arquivo errado . Depois de editar o.bashrc
arquivo correto, meus apelidos foram reconhecidos.fonte
A propósito, se você ativou o ZSH, ele substitui o bash!
Portanto, todos esses
~/.bashrc
arquivos não são carregados.Você precisa definir seus aliases
~/.zshrc
.fonte
Para manter o login no estilo OSX
.profile
e suportar o comportamento normal do bash,.bashrc
você pode usar um.bashrc
arquivo se alternar entre o nix normal e o OSX, fornecendo um link simbólico para o seu.bashrc
arquivo chamado.bash_profile
. Apenas verifique se esse arquivo já não existe antes de tentar isso, mas é assim que eu faço.fonte
.bash_profile
) e uma inicialização diferente em cada nível do shell (.bashrc
)./ etc / bashrc é para perfis globais em sistemas Mac. Você pode adicionar: alias ls = "ls -G" na parte superior deste arquivo e, para o seu bem, todos terão arquivos e pastas coloridos no sistema, para que você não precise definir nada extra para cada usuário. Você também notará que, juntamente com "sudo su -", para remover sua raiz, ainda terá arquivos e pastas coloridos sem dores de cabeça extras.
Outra dica divertida: ao usar o Iterm2 do mac, a importação de perfis de cores renderizará a coloração dos arquivos e pastas imediatamente de acordo com o esquema de cores, após a opção "/ etc / bashrc".
fonte