3

I was interviewed for an internship and I got the same question as this one: http://www.glassdoor.com/Interview/Which-2-letter-POSIX-command-is-different-from-all-the-others-QTN_498236.htm

The answer is right, it is cd (as the interviewer told me so). I am very confused at this one. Why cd is different? I told the interviewer that it is different because it might not be implemented by the "shell", but I did not know what I was talking about at that time.

Hauke Laging
  • 88,146
  • 18
  • 125
  • 174
Boyu Fang
  • 281
  • 2
  • 8
  • 2
    I believe `cd` __must__ be implemented by the shell. – casey Dec 20 '13 at 00:43
  • @casey yeah I know, I must be very stupid when I answer this question. I just didn't know what to say at that moment. – Boyu Fang Dec 20 '13 at 00:44
  • 9
    Don't beat yourself up over this Q. It's a dumb Q, it needs to be qualified..."different how"? At any rate knowing this info as a new hire, matters why? This is another example of Unix elitists showing off and making themselves feel superior b/c they know some nonsense-less, useless bit of knowledge. – slm Dec 20 '13 at 03:19

1 Answers1

31

This is of course a subjective question with many plausible answers.

A peculiarity of cd is that it has to be implemented by the shell itself: it cannot be an external command (one that runs in a separate program). cd changes the working directory of the shell process, and only the shell itself can do that.

This is a poor question because cd isn't the only such command. bg, fc, fg are in the same boat. cd existed before the others, which is one way to make it unique.

Another plausible answer would be dd, which has an option syntax that is entirely unlike any other command (it was borrowed from IBM).

Of course you can make arguments for many other commands, such as rm (the only 2-letter command that is purely destructive), su (the only two-letter command that absolutely has to be setuid root), at (the only two-letter command that is typically setgid), sh (it's the shell itself, which makes it different from the other commands which are special-purpose), ps (the two-letter command that varies the most between unices), etc.

Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175