sudo bashを使用するときにエイリアスを保持する

sudo bashを使用するときにエイリアスを保持する

私は自分のアカウント用に独自のエイリアス コマンドを持つ Centos 5.5 サーバーを持っています。その場合、sudo bashそれらのエイリアスを引き続き使用できます。ルートにエイリアスを追加する必要はありませんでした.bashrc

Centos 6.5 の別のサーバーがあります。しかし、 を実行するとsudo bash、ログインしているユーザーのエイリアスが使用されません。 を使用するときに、ログインしているユーザーのエイリアスを含めるように構成する場所を知っている人はいますかsudo bash?

答え1

~/.bashrc に次の行を追加します。

alias sudo='sudo '

bashマニュアルより

エイリアスを使用すると、単純なコマンドの最初の単語として使用されるときに、文字列を単語の代わりに使用できます。シェルは、組み込みコマンド alias および unalias を使用して設定および設定解除できるエイリアスのリストを保持します。

各単純コマンドの最初の単語が引用符で囲まれていない場合、エイリアスがあるかどうかがチェックされます。エイリアスがある場合、その単語はエイリアスのテキストに置き換えられます。エイリアス名には、文字 '/'、'$'、'`'、'='、および上記のシェル メタ文字または引用符文字は使用できません。置換テキストには、シェル メタ文字を含む有効なシェル入力を含めることができます。置換テキストの最初の単語はエイリアスかどうかテストされますが、展開されるエイリアスと同じ単語は 2 度目に展開されません。つまり、たとえば ls を "ls -F" にエイリアス化しても、Bash は置換テキストを再帰的に展開しようとしません。エイリアス値の最後の文字がスペースまたはタブ文字の場合、エイリアスの後の次のコマンド ワードもエイリアス展開の有無がチェックされます。

そのため、Bash はコマンドの最初の単語のみをエイリアスとしてチェックし、それ以降の単語はチェックしません。つまり、sudo ll のようなコマンドでは、最初の単語 (sudo) のみが bash によってエイリアスとしてチェックされ、ll は無視されます。エイリアス値の末尾にスペースを追加することで、エイリアスの後の次の単語 (つまり sudo) をチェックするように bash に指示できます。

答え2

を使用するsudo -Eと、環境がエクスポートされます。

関連情報