Posso fazer o bash parar de analisar e validar um determinado alias?


8

Estou usando o Fedora 25 e adicionei o seguinte alias ao meu perfil do bash:

alias releasenotes="dnf updateinfo --refresh info `dnf check-update | cut -d '.' -f 1 | xargs` | less"

(Não posso usar a linha reta por dnf updateinfo infocausa de https://bugzilla.redhat.com/show_bug.cgi?id=1405191 )

Meu alias funciona, mas o comando leva cerca de 10 segundos para ser executado e, como o bash analisa e valida todos os alias quando o perfil é originado, a criação de um novo shell resulta em um travamento de 10 segundos. Isso é chato.

Existe alguma maneira de fazer o bash não tentar analisar e validar aliases - ou apenas esse?

Respostas:


9

Meu melhor palpite é que você provavelmente deve usar aspas simples em torno da definição de alias.

Eu sei que, ao usar aspas duplas, as variáveis ​​do shell são substituídas pelo conteúdo no estágio de definição de alias (como você disse analisando e validando) e backticks ou substituição de shell como $ (command).

Uma explicação melhor está nesta questão do Unix SE !

Se isso não ajudar a acelerar o carregamento do prompt novamente, defina uma função shell em vez de um alias.

edit: Não se esqueça de trocar o argumento cut para aspas duplas, como mencionado em quixotesco.


Isso foi feito! Você respondeu primeiro, então você recebe o crédito.
ILikeDirt # 03

9

bashestá interpretando sua cadeia de caracteres entre aspas e essa interpretação executa o dnf check-updatecomando incorporado . Essa execução é o que ocupa o tempo durante a definição do alias, não o dnf updateinfocomando principal que você está usando o alias. Experimente um exemplo artificial baseado em sleepe observe como aliasele leva 5 segundos:

alias sleep5="echo 'wake' ; `sleep 5` ; echo 'done'"

Use aspas simples para evitar a interpretação:

alias releasenotes='dnf updateinfo --refresh info `dnf check-update | cut -d "." -f 1 | xargs` | less'

Não se esqueça de trocar o cutargumento por aspas duplas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.