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
エイリアス値の末尾にスペースを追加します。