既存のコマンドと「重複する」名前を持つエイリアスを作成するにはどうすればいいですか?

既存のコマンドと「重複する」名前を持つエイリアスを作成するにはどうすればいいですか?

ssコマンド のというエイリアスを作成したいとしますsudo -s。ただし、はすでに既存のコマンドであるため、コマンド のssという別のエイリアスを作成します。sstss

通常のコマンド名だけを使用する場合、エイリアスがあるためこれは不可能です。

  1. 順序を尊重する方法で設定されていない、そして
  2. コマンドを参照するだけでなく、他のエイリアスも参照する

そこで、次のことを試してみます:

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

コマンドを実行するsstと が実行されてしまいますsudo -sが、これは意図したことではありません。

これはどうすればできるのでしょうか?

答え1

上記を機能させるには、実行するコマンドの絶対パスを参照する必要があります。

これは次のように実行できます。

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

ただし、常にその場所にいるとは限らないためss、より確実なアプローチは次のようになります。

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

これで上記は期待どおりに動作し、 がss実行されsudo -ssstコマンド が実行されますss

関連情報