De onde vêm os aliases no meu terminal

2

Sempre que eu inicio meu terminal bash no Windows (git-bash) e executo alias , obtenho os seguintes aliases:

$ alias
alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
alias ltsc='$(npm bin)/tsc'
alias lwbc='$(npm bin)/webpack'
alias node='winpty node.exe'

No meu .bashrc , tenho apenas o seguinte:

alias lwbc="\$(npm bin)/webpack"
alias ltsc="\$(npm bin)/tsc"

No meu .bash_profile , tenho o seguinte:

test -f ~/.profile && . ~/.profile
test -f ~/.bashrc && . ~/.bashrc

Eu não tenho o arquivo .profile .

Então, de onde vêm estes:

alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
alias node='winpty node.exe'

Atualização:

Descobri que esses aliases vêm de /etc/profile.d/aliases.sh , agora como sei de onde esse arquivo é acionado?

    
por Max Koretskyi aka Wizard 03.02.2017 / 19:29

3 respostas

3

Aqui está um trecho da documentação do bash:

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

Como você já verificou o conteúdo de .bashrc e .bash_profile no seu diretório inicial, é provável que a resposta sua pergunta para ficar no arquivo /etc/profile ; algumas distribuições configuradas padrões para todos os usuários, incluindo aliases. Se não, isso configuração pode estar em um dos outros arquivos mencionados no excerto.

    
por 03.02.2017 / 20:28
2

Eu uso o SUSE e posso dizer para essa distribuição que os aliases estão em /etc/bash.bashrc . E se você usar um csh ou tcsh, ele estará em /etc/csh.cshrc . Estes são específicos para sua distribuição linux, e é recomendado que você não os modifique. Em vez disso, crie e edite /etc/bash.bashrc.local como administrador, e você verá na parte inferior do arquivo /etc/bash.bashrc que ele fará um test -s /etc/bash.bashrc.local e, se o arquivo existir, ele será executado.

Eu odeio esses ls aliases também. Eu tenho comentado alias ls='ls $LS_OPTIONS' por anos em /etc/bash.bashrc . Apenas esteja ciente de que quando você corrige seu sistema e faz atualizações do kernel, esse arquivo /etc/bash.bashrc pode ser sobrescrito, então você terá que voltar e editar novamente.

você mencionou que está usando o bash terminal no Windows (git-bash) , portanto não sei se /etc/bash.bashrc existe especificamente para você.

    
por 03.02.2017 / 21:02
2

Peça ao bash para imprimir um rastreamento dos comandos que ele executa quando é iniciado.

bash -x

O rastreio mostra apenas os comandos à medida que são executados, não mostra de qual arquivo eles vêm. Mas eles têm que vir de um arquivo que o bash lê: primeiro /etc/bash.bashrc (se habilitado em seu sistema), então ~/.bashrc , além de quaisquer arquivos adicionais originados com o comando . ou source que, se usados, aparece no traço.

Se os aliases não aparecerem quando você executar o bash simples, somente em um shell de login , então eles estão definidos no lugar errado e você deve movê-los para ~/.bashrc . Para investigar de onde eles estão atualmente carregados, execute uma instância de login do bash com rastreio em: bash -l -x

    
por 04.02.2017 / 00:11