If directory is not specified, the value of shell parameter $HOME is used as the new working directory. If directory specifies a complete path starting with ``/'', ``.'', or ``..'', directory becomes the new working directory. If neither case applies, cd tries to find the designated directory relative to one of the paths specified by the $CDPATH shell variable. $CDPATH has the same syntax as, and similar semantics to, the $PATH shell variable. cd must have execute (search) permission in directory.
Because a new process is created to execute each command, cd would be ineffective if it were written as a normal command; therefore, it is recognized by and is internal to the shell.