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

8

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

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

(Eu não posso usar o dnf updateinfo info direto por causa do link )

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

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

    
por iLikeDirt 05.03.2017 / 15:15

2 respostas

9

Meu palpite é que você provavelmente deveria usar aspas simples ao redor da definição do alias.

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

Uma explicação melhor é nesta questão SE Unix !

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

edite: não se esqueça de trocar o argumento cut por aspas duplas, como quixotesco mencionado.

    
por 05.03.2017 / 15:42
9

bash está interpretando sua string entre aspas, e essa interpretação executa o comando dnf check-update incorporado. Essa execução é o que ocupa o tempo durante a definição do alias, não o comando principal dnf updateinfo que você está aliasando. Tente um exemplo artificial baseado em sleep e observe como o alias em si 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 argumento cut para aspas duplas.

    
por 05.03.2017 / 15:44