¿Cómo crear alias con nombres "superpuestos" a los comandos existentes?

¿Cómo crear alias con nombres "superpuestos" a los comandos existentes?

Digamos que quiero crear un alias llamado sspara el comando sudo -s. Pero ssya es un comando existente, por lo que quiero crear otro alias llamado sstpara el comando ss.

Si usa solo los nombres de comando normales, esto no es posible, ya que los alias:

  1. No estén establecidos de forma que respete el orden, y
  2. Haga referencia a otros alias, en lugar de solo hacer referencia a comandos

Entonces si intento lo siguiente:

alias sst='ss'
alias ss='sudo -s'

Al ejecutar el comando sst, se ejecuta sudo -s, lo cual no es mi intención.

¿Cómo se puede hacer esto?

Respuesta1

Para que lo anterior funcione, debe hacer referencia a la ruta absoluta del comando que desea ejecutar.

Se puede hacer con lo siguiente:

alias sst='/usr/bin/ss'
alias ss='sudo -s

Sin embargo, no siempre se puede estar seguro ssde que se encuentra en ese lugar, por lo que un enfoque más sólido sería:

alias sst='$(which ss)'
alias ss='sudo -s

Ahora lo anterior funciona como se esperaba, donde ssse ejecuta sudo -sy sstejecuta el comando ss.

información relacionada