Required by POSIX, and it does exactly what it's supposed to do: Changes directory in the process (not the parent shell). This isn't completely useless -- you get an exit status and potentially error messages out.
Something to note which wasn't mentioned here is that `cd` is not a binary executable, but instead a shell command. You won't find it anywhere in /bin, /sbin and so on. That's also why `sudo cd ` doesn't work, `sudo` will try to execute `cd` as root but it's not an executable so it won't find it. (tip: do `sudo -i` instead)
cd is a good example of something that has to be a built-in command, because it makes the shell itself do something (change its current working directory). Other commands in that category are umask, the job control ones (fg, bg, wait, ...), the ones setting variables (read, printf), and the control flow ones (if, while, break, return, exit, ...).
A lot of commands are also built-in for convenience but don't strictly need to be.
An executable of 'cd' wouldn't do anything useful, it could only change its own idea of working directory then exit, the shell or other executable that invoked it would be unchanged.
Nice basic introduction. For anyone wanting a comprehensive overview of each command, with examples (and generally more readable than man pages), the computerhope site is good. For example here's wc:
It's UN*X. The one thing it actually does good is having documentation on the system, instead of some weirdo's web page covered in ads. Type man <cmd> or info <cmd> in the shell. Also, for most of the world population, this will be a few seconds faster since it avoids loading a web page.
Probably not popular to say here, but it's ironic that the key benefit of computers is the ability to distance the user from complexity and mind-defeating details, yet computers themselves don't - yet? - offer said type of benefits.
What are you talking about? Of course they do! Try performing any of the operations listed in this article, or making a reply to this comment, by only twiddling the state of the transistors in your CPU.
[+] [-] davidpfarrell|3 years ago|reply
[+] [-] cperciva|3 years ago|reply
(And yes, I'm the cperciva in that version tag.)
[+] [-] unknown|3 years ago|reply
[deleted]
[+] [-] StuckDuck|3 years ago|reply
[+] [-] remram|3 years ago|reply
A lot of commands are also built-in for convenience but don't strictly need to be.
[+] [-] rjsw|3 years ago|reply
[+] [-] saagarjha|3 years ago|reply
[+] [-] codegeek|3 years ago|reply
[+] [-] 5e92cb50239222b|3 years ago|reply
[+] [-] photochemsyn|3 years ago|reply
https://www.computerhope.com/unix/uwc.htm
[+] [-] unixbane|3 years ago|reply
[+] [-] orsenthil|3 years ago|reply
[+] [-] chiefalchemist|3 years ago|reply
[+] [-] 74ls00|3 years ago|reply
[+] [-] r0f1|3 years ago|reply
[+] [-] firstSpeaker|3 years ago|reply
[+] [-] rafa123456|3 years ago|reply
[deleted]