If I am correct, pwd is a command, PWD is a variable('s name), and - in cd - is an operand.
What are the types of ~, ~-, ~+, * when they mean $HOME, the previous visited dir, the current dir, and the files under current dir? (from programming languages' perspective)
Are they variables' names? If yes, why does echo $~ not work?
Why does * work in:
for i in *; do ls "$i"; done