top | item 20550343

(no title)

NotMelNoGuitars | 6 years ago

Yeah, a handful of these tripped me up as well. I got:

Question: Write the command that you use to move into your home directory '~'

Your answer: cd

Correct answer: cd ~

The man pages specify that cd moves into the current user's $HOME directory if called without arguments, but I'm sure there's some mystic difference between cd $HOME and cd ~ in certain cases.

discuss

order

maherdeeb|6 years ago

Thanks a lot for your comment. I think both answers are correct. I am not sure if cd works for all systems.

codetrotter|6 years ago

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/c...

cd without an argument will change directory to $HOME if $HOME is set and the value is non-empty as defined in the standard linked above. That’s not to say that all Unix-like systems do or even try to implement everything of that standard, but it’s a good indicator pointing to that a lot or most of them probably do.

As for cd ~, tilde expansion is done by the shell, not by cd. Same goes with any other command that you type ~ as the leading part of a path and provide as argument. (Also, in bash, among others, cd is a builtin command.) The shell will substitute the ~ for the path of your home dir when ~ is alone or followed by a slash and anything else. (And you probably know also that ~example would refer to the home dir of a user named “example”.)

I think you will sooner run into a system with a shell that doesn’t do tilde expansion, than you will run into a Unix system where plain cd without an argument doesn’t bring you to your home dir.

montag|6 years ago

Things like this should probably be ‘Correct’ with a small warning.

DaveInTucson|6 years ago

Not sure if the site is meant to be strictly Linux/Unix or not, but on Windows, cd without any path just prints the current directory and doesn't do anything else. (Although "cd ~" produces the response "The system cannot find the path specified.")