echoがシェル組み込み関数であるにもかかわらず、「$sudo echo 'yo'」がまだ機能するのはなぜですか? [コピー]

echoがシェル組み込み関数であるにもかかわらず、「$sudo echo 'yo'」がまだ機能するのはなぜですか? [コピー]

私は理解

sudo cd /directory

次を返します。

sudo: cd: command not found

cd はバイナリファイルではなくシェル組み込みコマンドであるためです。しかし、なぜ

sudo echo 'this is a test'

お元気ですか?

ここで何が起こっているのでしょうか?シェルでない場合、sudoコマンドをどのように見つけることができますか?echo

ベストアンサー1

理由は簡単です。cdこれはシェル組み込み関数(一部のシェルではシェル関数)で、echoバイナリファイルであり、シェル組み込み関数です。

$ type -a cd  
cd is a shell builtin
$ type -a echo 
echo is a shell builtin
echo is /bin/echo

sudoシェルの組み込みは処理できませんが、処理できます。を$PATH使用すると で見つかるのでこれを使用し、 で見つからないので失敗します。sudo echo/bin/echo$PATHsudo cdcd$PATH

おすすめ記事