sudoを使用してコマンドを実行することとrootユーザーとして実行することの違いは何ですか?

sudoを使用してコマンドを実行することとrootユーザーとして実行することの違いは何ですか?

sudo <command>私はLinuxに初めてアクセスし、これまでは常に同じ実行を考えてきました。私は最近このコマンドで遊んで微妙だが混乱した違いを見つけました。<command>rootls

sudo ls -lap(ルートディレクトリで)実行すると、次の結果が表示されます。

sudo ls-lap

対。 (または一般ユーザーとして)ls -lap実行するときrootいいえ sudo):

LSループ

明白であるが重要ではない色の違いを除いて、詳細を見ると、実行コマンドを使用しても-pオプション(戻るディレクトリ表示)が機能しないことがわかります/linkssudo

2つの間に実質的な違いはありますか?それともバグですか?
とにかく、これは2つのコマンドが異なる方法で処理されることを意味しますか?

答え1

あなたlsはエイリアスであり、sudoそれを知りません。ユーザーをに切り替えると、root対話型シェルは起動スクリプトを実行し、関連するエイリアスを設定します。

alias ls次に実行してみてくださいroot渡す sudo、そのコマンドを確認してください。

シンボリックリンク出力の違いは、出力に色を追加する副作用のようです。

ls -lp --color=tty /

V.

ls -lp --color=never /

同じ違いを見せてくれます。

関連情報