Posso fare in modo che bash smetta di analizzare e convalidare un determinato alias?


8

Sto usando Fedora 25 e ho aggiunto il seguente alias al mio profilo bash:

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

(Non riesco a usare direttamente a dnf updateinfo infocausa di https://bugzilla.redhat.com/show_bug.cgi?id=1405191 )

Il mio alias funziona, ma l'esecuzione del comando richiede circa 10 secondi e poiché bash analizza e convalida tutti gli alias quando il profilo viene fornito, la creazione di una nuova shell comporta un blocco di 10 secondi. Questo è fastidioso.

C'è un modo per fare in modo che bash non provi ad analizzare e validare gli alias - o solo quello?

Risposte:


9

La mia ipotesi migliore è che dovresti probabilmente usare virgolette singole attorno alla definizione di alias.

So che quando si usano le virgolette doppie, le variabili della shell vengono sostituite con il loro contenuto nella fase di definizione dell'alias (come hai detto analisi e validazione) e backtick o sostituzione della shell come $ (comando).

Una spiegazione migliore è in questa domanda Unix SE !

Se ciò non aiuta a velocizzare il caricamento del prompt, definire una funzione shell anziché un alias.

modifica: non dimenticare di scambiare l'argomento cut con virgolette doppie come quelle menzionate.


Questo è stato fatto! Hai risposto prima, quindi ottieni il credito.
iLikeDirt,

9

bashsta interpretando la stringa tra virgolette e tale interpretazione esegue il dnf check-updatecomando incorporato . Questa esecuzione è ciò che richiede tempo durante la definizione dnf updateinfodell'alias , non il comando principale che stai aliasando. Prova un esempio inventivo basato su sleepe nota come lo aliasstesso richiede 5 secondi:

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

Usa virgolette singole per evitare l'interpretazione:

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

Non dimenticare di scambiare l' cutargomento con virgolette doppie.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.