Para criar um alias para o Terminal no OS X, você pode colocar os alias em .bash_profile
ou .bashrc
. Qual é a diferença entre os dois e por que eu escolheria colocar aliases em um e não no outro?
terminal
command-line
bash
daviesgeek
fonte
fonte
brew install bash
e usar iTerm2, você pode definirprofile -> command
a/usr/local/bin/bash
que irá carregar.bashrc
por padrão depois.bash_profile
. Isto também lhe dá Bash 4 guloseimas ...Respostas:
.bash_profile
é executado para shells de login, enquanto.bashrc
é executado para shells interativos de não login.Quando você faz login (digite nome de usuário e senha) no console, sentado na máquina ou remotamente via ssh:
.bash_profile
é executado para configurar seu shell antes do prompt de comando inicial.Mas, se você já fez login na sua máquina e abre uma nova janela de terminal (xterm),
.bashrc
é executada antes do prompt de comando da janela..bashrc
também é executado quando você inicia uma nova instância do bash digitando/bin/bash
um terminal.No OS X, o Terminal, por padrão, executa um shell de login todas as vezes, portanto isso é um pouco diferente da maioria dos outros sistemas, mas você pode configurá-lo nas preferências.
fonte
On OS X, Terminal by default runs a login shell every time
- Eu sempre fiquei tão confusa por não perceber isso. Ótima informação!.zprofile
é executado sempre.O X11 examinará seu
.bashrc
tempo enquanto um terminal "regular" analisará.bash_profile
No entanto, se você adicionar o seguinte ao seu
.bash_profile
, então você pode mover tudo em seu.bashrc
arquivo, de modo a consolidar tudo em um só lugar, em vez de dois:fonte
cd ~ ; ln -s .bashrc .bash_profile
.~/.bash_profile
). Também é frequentemente necessário ter coisas para definir incrementalmente em todos os níveis do shell (~/.bashrc
). Não é a melhor idéia a sugerir suprimir essa liberdade.~/.bash_profile
todas as novas janelas / guias, então não há realmente uma maneira de separar as duas no que diz respeito ao Terminal..bash_profile
nunca pode ser obtido novamente no processo filho. Cada nível de fontes de Bash aninhados.bashrc
, por isso, se você colocar algo comoexport A=a:$A
no.bashrc
, o seu$A
vai ficar mais tempo no Bash aninhada. Normalmente deixo a variável de ambiente no perfil e os aliases no RC.Para o macOS, o código a ser inserido
.bash_profile
para consolidar tudo.bashrc
é o seguinte:Isso é mais específico para o usuário do terminal Mac.
fonte
TLDR; use
.bash_profile
para seus apelidos.A maneira como os diferentes arquivos de inicialização funcionam juntos é um pouco mais complicada e existem alguns casos especiais importantes no OSX. Aqui estão os destaques:
.bash_profile
é chamado. Assim, o conselho TLDR acima..bashrc
também é uma opção, mas isso será chamado toda vez que você criar um subshell (por exemplo, invocarbash
), que poderá criar ineficiência se você atualizar uma variável dentro dele (por exemplo,PATH=/bin/foo:$PATH
).bashrc
de.bash_profile
são bastante comuns. Eu não recomendo isso, mas é uma preferência.fonte
.bash_profile
de aliases é complicado? Os itens que você lista apenas parcialmente são sobre aliases; portanto, em vez de apenas listar alguns marcadores que possam explicar por que parece ser complicado, você pode propor uma maneira de tornar mais fácil essas restrições?