What is the difference between .
(or ..) and ~
character with respect to how they are treated by the bash?
If i use ~
character, bash expands it to absolute path but if is use .
(or ..) bash does not expand it to absolute path?
My pwd is home directory. Now, when i run the command: ls '.'
(or ls .) it shows me the contents of the pwd but if i run the command: ls '~'
, it gives the error that the file or directory does not exists.
This means ~
is expanded by shell before passing it to the ls
command but .
is not.
Is .
not a special character? When is .
(or ..) treated as special character and expanded by the shell?
./
and../
directories?~
is only special when it is unquoted and when it is the first character of a word -- gnu.org/software/bash/manual/bash.html#Tilde-Expansion.
and..
are not special to bash in any way, so they are the same quoted or unquoted.