Если я прав, pwd
— это команда, PWD
— это переменная (имя), а -
— cd -
это операнд.
Каковы типы ~
, ~-
, ~+
, *
когда они означают $HOME
предыдущий посещенный каталог, текущий каталог и файлы в текущем каталоге? (с точки зрения языков программирования)
Это имена переменных? Если да, то почему echo $~
не работает?
Почему *
работает в:
for i in *; do ls "$i"; done
решение1
*
является метасимволом (или подстановочным знаком), все остальные являются tilde-prefix
примерами ( ~
является стандартом ~+
и ~-
являются расширениями).
Ни один из них не является переменным, поэтому нет смысла ставить перед ними префикс $
.
echo $~
работает отлично, отображает $~
. Расширения нет, так как ~
не используется как префикс.
for i in *; ...
работает так, как задумано.