PATHを横説説に変更しても引き続きコマンドを使用できるのはなぜですか?

PATHを横説説に変更しても引き続きコマンドを使用できるのはなぜですか?

環境変数PATHは実行可能コマンドの検索パスであるため、PATHを存在しない変数(たとえばexport PATH=blah)に変更すると、コマンドは使用できなくなると思いました。

変更した後は、すべてのコマンドを使用できません(例:使用できませんls)。ただし、明らかにまだ多くのコマンドを使用でき、引き続き使用しexportて再度変更できます。

検索パスですべてのコマンドを実行できませんか?まだ利用可能なこれらのコマンドの実行可能ファイルはどこにありますか?歪んだ検索パスを引き続き使用できるのはなぜですか?

答え1

シェル内のコマンドである組み込みコマンドを実行し続けることができるため、実行可能ファイルのサポートは必要ありません。

たとえば、シェルがある場合は、次のようになりますbashhttps://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html

シェルの内部に影響を与えるいくつかのコマンド(cdexec:)exitは、期待どおりに機能しないか、まったく機能しないため、外部バイナリでは提供できません。

答え2

あなたのシェルがbash、シェル組み込み関数、シェルキーワード、シェル組み込み関数などのシェル別名がたくさんあるとします。

alias, bg, bind, break, builtin, case, cd, command, compgen, complete, continue, declare, dirs, disown, echo, enable, eval, exec, exit, export, fc, fg, getopts, hash, help, history, if, jobs, kill, let, local, logout, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend, test, times, trap, type, typeset, ulimit, umask, unalias, unset, until, wait, while

以下はまだ有効です。

echo "Hello, world!'

cd /opt

printf '%s\n' /home/user/*

exit

関連情報