Por que você não deve usar um caminho completo em seus aliases do Linux

por Nada Em Troca
5 minutos de leitura
Por que você não deve usar um caminho completo em seus aliases do Linux

Links de salto

Às vezes, você pode ver conselhos que sugerem o uso de caminhos completos em seus aliases. Pare um momento. Esse é realmente o comportamento que você deseja e como você pode decidir?

O que é um pseudônimo?

Um alias é uma maneira mais curta de digitar um comando. Quando você executa um alias, seu shell o substitui por texto predefinido que pode adicionar argumentos ou executar um comando completamente diferente.

Você pode criar um pseudônimo usando o comando alias como este:

         alias word="command"

Depois de criar um pseudônimo, seu shell substituirá palavra (No início de um comando) com o conteúdo completo das cotações duplas. Então, por exemplo, se você correr:

         alias ls="ls -GF"

Então, sempre que você digita “LS”, você obterá “LS -GF”.

Os aliases são realmente úteis porque podem economizar tempo e simplificar comandos mais longos. Eles também podem ajudá -lo a ajustar o comportamento dos programas, variando seus padrões.

Por exemplo, recentemente me deparei com uma dica no manual do FD sobre a passagem de bandeiras para o programa usando um alias:

         alias fd="/usr/bin/fd --no-ignore-vcs"

Por padrão, o programa filtra arquivos que são ignorados pelos sistemas de controle de versão. O sinalizador “–não-IGNORE-VCS” reverte esse comportamento padrão; portanto, configurá-lo como um alias altera o padrão permanentemente.

O que me impressionou sobre isso foi o caminho completo no pseudônimo. Estou acostumado a aliases sem caminho, como o ls exemplo acima. Então, como incluir o caminho completo afeta as coisas?

O que um pseudônimo com um caminho faz?

Se o seu shell substituir “FD” por “/usr/bin/fd,” não deve haver um problema real. Executar um comando por meio de todo o seu caminho é perfeitamente aceitável; Se um executável não estiver no seu caminho, é a única maneira de executá -lo.

Os problemas podem surgir, no entanto, quando você ignora o sistema de caminho, usando caminhos absolutos para comandos. O que acontece se o FD se mover de/usr/bin para/usr/local/bin? Seu alias gerará um erro e não será executado.

Esse problema não é tão ruim: você pode identificar a causa e corrigi -lo. Mas e se você tiver várias versões do mesmo comando instalado em locais diferentes dentro do seu caminho? Esta não é uma situação incomum; por exemplo:

Uma sessão do Terminal Linux mostrando duas versões diferentes do programa RI instalado nos locais do caminho.

No meu sistema, o comando RI existe em dois locais:/opt/homebrew/bin e/usr/bin. Como esses caminhos estão listados nessa ordem no meu caminho, a versão homebrew é precedente. Mas um pseudônimo com um caminho absoluto pode causar problemas:

         alias ri="/usr/bin/ri -f markdown"

O comando RI agora sempre executará a versão em /usr /bin, mesmo que uma versão seja posteriormente instalada no diretório homebrew ou em qualquer outro lugar. Com efeito, o uso de um caminho absoluto completo em seu alias quebra o sistema de caminho, que é um dos grandes pontos fortes do Linux.

E quanto a um pseudônimo sem caminho?

Em vez de um caminho completo, você pode – e deve – usar apenas o nome do comando. Por exemplo:

         alias fd="fd --no-ignore-vcs"
alias ls="ls -GF"
alias ri="ri -f markdown"

Esses aliases respeitarão o sistema de caminho e executarão o comando mais apropriado, desde que você tenha seu caminho configurado corretamente. Além disso, você ainda será capaz de substituí -los facilmente. Para ignorar o alias e/ou usar uma versão específica de um comando, basta executá -lo através do caminho absoluto:

         /usr/bin/ri

E quanto à outra metade do pseudônimo?

Se você experimentou um pouco de aliases e caminhos, deve ter notado que eles dependem de como você executa um comando. Os aliases são muito literais e se aplicam apenas quando corresponderem exatamente o que você digita, não apenas quando correspondem ao comando que você executa.

Por exemplo, no meu sistema, o comando LS vive em /bin /ls, e eu tenho um alias ls = ‘ls -gf’:

O Linux que comanda mostrando um alias para LS e um binário em /bin /ls.

A execução de LS é executada esse alias, para que a saída seja colorida e os tipos de arquivos são indicados:

Saída do programa LS, que foi alias para usar as opções -g e -f.

Nos bastidores, o executável /bin /ls ainda é executado; apenas recebe essas opções como argumentos. No entanto, correr /bin /ls diretamente não faz a mesma coisa:

Saída de um programa localizado em /bin /ls

Isso é simplesmente porque ls não é literalmente a mesma corda que /bin/lsmesmo que seja o mesmo arquivo. O que pode surpreendê -lo ainda mais é que é absolutamente bom especificar um caminho completo no lado esquerdo de um pseudônimo também:

         alias /bin/ls="ls -GF"

No que diz respeito à concha, que “/bin/ls” não é realmente um caminho; É apenas uma string para combinar. Não há conexão entre ele e o arquivo real nesse caminho; Nem precisa haver A /BIN /LS para existir tal pseudônimo.

Claro, não há razão real para alias /bin /ls assim. Os aliases devem ser curtos e fáceis de digitar, e o sistema de caminho permite que você evite digitar o caminho completo de um comando em primeiro lugar. Você pode tentar cobrir todas as suas bases para garantir que o LS sempre funcione com certas opções, mas nunca atenderá a todas as possibilidades:

Saída do alias A /BIN /LS mostrando que se aplica literalmente, não ao próprio programa executável.

Então, o que devo usar?

Lembre -se de que os aliases são um pouco como macros: são um mecanismo simples de combinação e substituição. Embora você possa usá-los para fornecer opções padrão, lembre-se de que elas têm um escopo específico: para uso interativo da linha de comando.

Se você está escrevendo um script de shell, há muito a levar em consideração: aliases, funções de shell, Buildins e muito mais. Certifique -se de saber qual destes você pretende executar e qual será realmente executado.

O comando interrompido sempre executará um programa, ignorando quaisquer funções, construções ou aliases que possam existir. Da mesma forma, você pode ignorar os aliases citando seu comando de qualquer maneira válida:

         pwd
"pwd"
'pwd'
Este artigo foi útil?
Gostei0Não Gostei0

Deixe um comentário

Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?
-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00