Suppongo che tu sappia già come creare alias in Linux. Un alias ti aiuta a eseguire facilmente lunghi comandi personalizzati. Puoi rendere permanente l'alias aggiungendolo al tuo bashrc o al file di configurazione di qualsiasi shell tu stia eseguendo in Linux.
Il problema sorge quando si tenta di eseguire l'alias con sudo. Vedrai un errore come questo:
sudo: my_alias: command not found
Ecco un esempio. Ho creato un alias up
per apt update
comando. Il comando apt update deve essere eseguito con sudo. Ma se provo a eseguire sudo up
, dà un errore:
Penserai che dal momento che stai eseguendo come utente root, l'alias dovrebbe essere definito nel bashrc dell'utente root, ovvero /.bashrc. Vai avanti e provalo ma scommetto che non funzionerà.
Lascia che ti mostri un piccolo trucco per eseguire un comando alias con sudo.
Esecuzione del comando alias con accesso sudo
Il trucco è creare un alias per sudo stesso in questo modo:
sudo='sudo '
Lo spazio (o la scheda, se lo preferisci) dopo sudo è importante nel codice sopra. Ora, se esegui il comando alias con sudo, dovrebbe funzionare perfettamente.
Ma perché? Perché funziona ora quando tutto ciò che hai fatto è stato sostituire il comando sudo con sudo e uno spazio? La risposta sta nel modo in cui l'alias è progettato per essere utilizzato.
Se fai riferimento alla parte alias del manuale di bash, vedrai che la prima parola di ogni semplice comando, se non tra virgolette, viene controllata per vedere se ha un alias. Se l'ultimo carattere del valore dell'alias è uno spazio o un carattere di tabulazione, anche la parola di comando successiva all'alias viene controllata per l'espansione dell'alias.
In altre parole, in un comando viene verificata l'alias solo nella prima parola. Ma se il valore dell'alias ha uno spazio o una tabulazione alla fine, anche la parola successiva del comando viene controllata per un alias.
Questo è il motivo per cui quando esegui semplicemente il comando sudo my_alias con sudo alias a "sudo", prima sudo viene verificato l'alias. Viene trovato un alias con uno spazio alla fine e quindi il sistema controlla la parola successiva per un alias. Trova anche l'alias per questo e il tuo comando con alias funziona come desideri.
Spero che questo piccolo suggerimento rapido ti sia piaciuto, utile per eseguire l'alias con sudo. Eventuali domande o suggerimenti sono sempre ben accetti.