Aliases: diferença entre .bash_rc, .bash_aliases e / usr / local / bin

9

Brincando com o Terminal, notei que existem muitas maneiras de criar aliases permanentes .

Sou iniciante no Linux e, pelo que sei, estou fazendo:

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. adicionando desired_alias = '/path/to/executable'a~/.bashrc
  3. descomentando essas linhas em ~/.bashrc:

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi

    e colocando desired_alias = '/path/to/executable'no~/.bash_aliases

todos têm o mesmo efeito.

Qual é a diferença entre o primeiro e o segundo método?

Strae
fonte

Respostas:

10

Com o primeiro método, você não está criando um alias, está criando um link simbólico. Links simbólicos são abreviações de links simbólicos:

Links simbólicos são arquivos que agem como ponteiros para outros arquivos. [...] Um link simbólico é um tipo especial de arquivo cujo conteúdo é uma string cujo nome de caminho é outro arquivo, o arquivo ao qual o link se refere. Em outras palavras, um link simbólico é um ponteiro para outro nome, e não para um objeto subjacente.

Leia mais sobre links simbólicos aqui e aqui .

Somente com o segundo método você está, de fato, criando um alias.

Os aliases permitem que uma sequência seja substituída por uma palavra quando é usada como a primeira palavra de um comando simples. O shell mantém uma lista de aliases que podem ser configurados e desabilitados com os comandos internos de alias e unalias (consulte SHELL BUILTIN COMMANDS abaixo). A primeira palavra de cada comando simples, se não estiver entre aspas, é verificada para ver se possui um alias. Nesse caso, essa palavra é substituída pelo texto do alias.

Você pode definir um alias em qualquer lugar em que possa digitar um comando e fazer com que o shell ( bash , neste caso) o interprete; no entanto, para que o alias esteja disponível em outros shells, ele precisa ser definido em um arquivo interpretado pelo shell na inicialização (inicialização do shell, não inicialização do computador).

Para o bash, são /etc/bash.bashrc(todo o sistema) e ~/.bashrc. Esses arquivos são interpretados quando o shell inicia no modo interativo (como ao usar Terminal). Não vou mencionar os arquivos de perfil porque eles servem a um propósito diferente.

Portanto, você deseja adicionar seus aliases ~/.bashrcpara tê-los disponíveis em todos os shell interativos.

O .bash_aliasesmétodo realiza exatamente o mesmo que colocar os aliases, ~/.bashrcmas tem o benefício adicional de ser mais fácil de ser analisado e manipulado pelos programas.

A . ~/.bash_aliasesorigem dos meios (carga) _~/.bash_aliases_no contexto do shell atualmente em execução.

Li Lo
fonte
@lilo você me venceu no tutorial! 1
myusuf3
@gc Estou bater o saco então vá :) selvagem
Li Lo
@lilo hahahha :)
myusuf3
11
Você pode pensar que está funcionando da mesma forma, mas não está. Por favor, leia os materiais nos links simbólicos que referi na minha resposta. O link simbólico e os aliases servem a propósitos diferentes e foram criados com propósitos diferentes em mente. Para dar um exemplo de por que os links simbólicos não estão funcionando como pseudônimos, tente isto - defina um pseudônimo como: alias px = "ps axu". Agora tente fazer o mesmo com links simbólicos.
Li Lo
11
@ Lo Lo: eu entendi a diferença entre synlink e / usr / local / bin, mas minha pergunta (que talvez seja um pouco fora de tópico com a pergunta geral) é: o que é exatamente exaclty / usr / local / bin?
Strae 18/08/10