Hádám, že už víte, jak vytvořit alias v Linuxu. Alias vám pomůže snadno spouštět dlouhé vlastní příkazy. Alias můžete učinit trvalým tak, že jej přidáte do svého bashrc nebo konfiguračního souboru libovolného shellu, který v Linuxu používáte.
Problém nastává, když se pokusíte spustit alias pomocí sudo. Zobrazí se tato chyba:
sudo: my_alias: command not found
Zde je příklad. Vytvořil jsem alias up
pro apt update
příkaz. Příkaz apt update je třeba spustit pomocí sudo. Ale když se pokusím spustit sudo up
, zobrazí chybu:
Budete si myslet, že protože běžíte jako uživatel root, alias by měl být definován v bashrc uživatele root, tj. /.bashrc. Pokračujte a zkuste to, ale vsadím se, že to nebude fungovat.
Dovolte mi ukázat vám úhledný malý trik, jak spustit příkaz alias pomocí sudo.
Spuštění příkazu alias s přístupem sudo
Trik je vytvořit alias pro samotné sudo takto:
sudo='sudo '
Ve výše uvedeném kódu je důležitá mezera (nebo tabulátor, chcete-li) za sudo. Nyní, pokud spustíte příkaz alias pomocí sudo, mělo by to fungovat dobře.
Ale proč? Proč to teď funguje, když vše, co jste udělali, bylo nahradit příkaz sudo sudo a mezerou? Odpověď spočívá ve způsobu, jakým je alias navržen k použití.
Pokud se podíváte na aliasovou část manuálu bash, uvidíte, že první slovo každého jednoduchého příkazu, pokud není v uvozovkách, je zkontrolováno, zda má alias. Pokud je posledním znakem hodnoty aliasu mezera nebo znak tabulátoru, pak se zkontroluje rozšíření aliasu i další příkazové slovo za aliasem.
Jinými slovy, v příkazu se kontroluje pouze první slovo na alias. Ale pokud má hodnota aliasu na konci mezeru nebo tabulátor, zkontroluje se alias i další slovo příkazu.
To je důvod, proč když jednoduše spustíte příkaz sudo my_alias s aliasem sudo na „sudo“, nejprve se sudo zkontroluje na alias. Je nalezen alias s mezerou na konci, a proto váš systém zkontroluje další slovo pro alias. Najde alias i pro tento a váš aliasový příkaz funguje tak, jak chcete.
Doufám, že se vám tento rychlý malý tip užitečný při spouštění aliasu pomocí sudo líbil. Jakékoli dotazy nebo návrhy jsou vždy vítány.