Ubuntu 10.04を実行していて、upstartを使用しています デーモン管理用。私のエンタープライズアプリケーションはデーモンとして実行されており、さまざまな特権があるため、rootとして実行する必要があります。例:
sudo start my-application-long-ID
sudo stop my-application-long-ID
etc
aliasを紹介します これらのコマンドを次のように省略します:
alias startapp='sudo start my-application-long-ID'
startappとして実行します それは機能しますが、エイリアスにsudoを含めたくないのです。
alias startapp='start my-application-long-ID'
sudo startappを使用して実行した場合は実行されません 、sudo: startapp: command not foundを返します 。
ただし、エイリアスを追加したとき:
alias sudo='sudo '
sudo startapp 現在は機能していますが、sudoがエイリアスを無視する理由にまだ興味があります。
承認された回答:
ここから以下の情報が表示されます。
sudoを使用する場合は、エイリアス拡張を使用します(それ以外の場合、sudoはエイリアスを無視します)
alias sudo='sudo '
それが機能しない理由はここで説明されています。
Bashは、コマンドの最初の単語のみをチェックしてエイリアスを探します。それ以降の単語はチェックされません。
つまり、sudo llのようなコマンドでは、最初の単語(sudo)のみがbashによってエイリアスをチェックされ、llは無視されます。
bashに、エイリアスの次の単語をチェックするように指示できます(つまり、 sudo)by
エイリアス値の末尾にスペースを追加します。