The examples above imply that noglob is not set (it's off) in the current shell. This built-in variable controls the wild card expansion and along with others can be set in a shell startup file - .login, .bashrc, .profile, .cshrc, etc.
In most cases it's unset, but just for the sake of argument consider this.
(The following uses the C-shell syntax, but concept may be valid for other shells too.)
-
% ls *
-
// - produces a long list of files
-
% set noglob
-
%ls *
-
ls: *: No such file or directory
-
%cd *
-
*: No such file or directory.
-
// because shell was looking for file or dir literally named "*"
-