2

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
Tim
  • 101,790

1 Answers1

1

* is a metacharacter (or wildcard), all the other ones are tilde-prefix examples (~ is standard, ~+ and ~- are extensions).

None are variables so there is no point prefixing them with a $.

echo $~ works fine, it displays $~. There is no expansion because ~ is not used as a prefix.

for i in *; ... works as designed.

jlliagre
  • 61,204
  • 1
    Here they're discussed here in the Bash docs: http://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html – slm Oct 11 '14 at 07:12