Hacker News new | ask | show | jobs
by codetrotter 2513 days 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.

1 comments

Technically the chances of tilde not working are the same as cd behaving differently because they’re both shell builtins.

I’m guessing (though admittedly not checked) that both ~ and cd (without parameters) are defined in POSIX. In which case any edge case that doesn’t conform could reasonably be discounted with regards to the submission’s exercise.

I did some quick research on the POSIX thing and it looks like cd (without parameters) is defined in POSIX:

https://www.unix.com/man-page/posix/1posix/cd/

Also I don’t know why many of my posts keep getting downvoted even when they’re factually accurate.